The Changelog

New updates and improvements to Lorcast.

Join Discord

Collector Number

August 13, 2024

You can now use number and cn to search for cards by their collector number. You can also use comparison values to search over a range of cards. Use this, in combination with set to narrow down a search over part of a set.

Example

number:1
set:1 number:207
number>=205

The Syntax Page has been updated with examples.

Legalities Update

July 17, 2024

Legalities have been updated and added to all cards. Currently there is only a single constructed format, core.

The only cards that are not legal are cards that are not released yet (prerelease cards) as well as Ursula's cards in Illumineer's Quest - Deep Trouble.

Search

format:core

When cards are banned you can search for this as well:

banned:core

The Syntax Page has been updated with examples.

July 3rd 2024, Data Update

July 3, 2024

I've done a lot of work to allow Lorcast to sync to external data sources. This allows me to pull in data that is not readily available in the official app API or any other singular source.

For example, the official API

One side-effect of that is I can verify

I've recently begun

You can now use is to search for groups of cards that are a logical grouping. Currently, this is used for grouping together cards within the promo set that form a group but are all within the same set.

In the future, this will support other groups of cards.

Example

is:d100

Current Supported Tags

The Syntax Page has been updated with examples.

Is

June 27, 2024

You can now use is to search for groups of cards that are a logical grouping. Currently, this is used for grouping together cards within the promo set that form a group but are all within the same set.

In the future, this will support other groups of cards.

Example

is:d100

Current Supported Tags

The Syntax Page has been updated with examples.

Shorthands

April 1, 2024

One of the most requested features for Lorcast was the ability to search with a shorthand keyword instead of the full word. At the start, I felt it was important to make sure the operators were correct and their usage felt good.

However, once you start doing a few searches it quickly becomes annoying to need to type the full rarity: (for example), when a shorthand operator would be so much nicer.

Well, you finally can do so! Searches like the following are supported:

Cards that are Amber or Steel

i:amber or i:steel

Shift cards that cost more than 7 or exactly 5 that cannot be inked.

(c>7 or c:5) e:shift -iw

Actions that deal damage to both characters and locations

t:action e:damage (e:character e:location)

It was important to get most of the keywords created first so the shorthands wouldn't have conflicting overlaps. For example, e is used for text because t was taken for type.

The Syntax Page has been updated with examples.

Launch Week

March 1, 2024

I launched Lorcast to the world this week on Reddit. It was well received and the feedback I got was fantastic. Thank you everyone for searching!

The Changelog

I created The Changelog to document past and upcoming changes. This is where API changes will be communicated when a breaking change occurs. I'll also document new features, fixes, and other changes.

I got a lot of great feedback from the community from the launch. There are several changes I need to make to the foundation of Lorcast, which I'll be rolling out in the next few weeks.

Support Card Variants

Lorcast now has much better support for variants of cards. This will make adding the promo versions of cards much easier and reduces the noise in search. When a search result returns the same card it will deduplicate it and only show one of them.

Further, each card page now shows all the variants of that card, what set they are from, and their rarity. You can see it on a page like Kida, Protector of Atlantis. Let me know what you think!

On the technical side, I switched the number column of a card to be a text column from an int. I'm using Postgres' COLLATE functionality to do ordering on that column treating it as a numeric column. The API reflects this change.

Remove Prisma

Lorcast originally started out using Prisma as the ORM. While Prisma handles a lot of simple interactions well, one thing it didn't handle well was the dynamic query generation for the search query. Because a user can create an arbitrarily complicated query, that SQL query needs to be dynamically created as well. Prisma's support for these queries requires the parameters to be placed within its SQL template string, which posed challenges when concatenating many queries together. The most straightforward approach was to use parameterized queries and let Postgres handle the parameter substitution.

So, for the searching functionality, I used pg, the Node.js Postgres package.

This left me in the awkward position of having two different database connections. While I could connect them with a Prisma adapter, I was still facing limitations concerning what Prisma was good at.

I didn't realize it at first, but there is a lot of data massaging that needs to happen in a card search! For example, Into the Inkland introduced Dalmatian Puppy, which has 5 different variants as cards. These collector numbers are no longer integers (1, 2, 3, etc) but now strings (4a, 4b, 4c, etc). Switching the database column to text means it's no longer easy to order by collector number, which is still a requirement! To resolve this, more complex ordering logic needs to be used for the queries. Again, this isn't hard in SQL but becomes messy when passing through an ORM like Prisma.

For these reasons, Prisma was removed.

Fixed

  • Database results are not caching, causing too many database connections.
  • Queries using or at the start of a string would incorrectly count that as a or lex token.
  • Rarity required exact matches, but now it doesn't.
  • Several SQL bugs.
  • Added more tests.