All notable changes to ManaVault are documented here.
Versions follow Semantic Versioning.
This file is generated from git log using git-cliff.
See docs/releasing.md for maintainer instructions.
- android: Fall back to the status bar height for the top inset (
03f28366) - scanner: Say why a corrections export token was refused (
21bf51bd) - scanner: Export skipped captures with a null label (
cac2456c) - pricing: Prefer TCGplayer market price over listing lows (
1af517fd)
- backlog: Record phone detector profile progress (
8a13820b)
- scanner: Document Identify and per-app training sources (
6b6b1276)
- scanner: Identify cards the scanner misses (
e0883500) - scanner: Fill the screen with the camera and add preview zoom and pan (
682ce6b0)
- android: Keep backgrounds behind the system bars (
090acee7) - scanner: Clean up the camera view on Android (
30fc02b5)
- scanner: Collect labelled scans for training recognition (
788d11f7) - pricing: Follow lowest near-mint TCGplayer listing (
10a93f24)
- android: Pad the WebView by the system bar insets natively (
7a9787d6) - scanner: Delay notices and show the card scan straight away (
0a2c1aae)
- Provide authoritative deck counts to AI (
283195e1) - Prevent truncated deck AI answers (
54a48a9b) - Increase deck AI completion budgets (
48ba8b46) - Enforce deck AI response invariants (
a42b7de7) - Import Moxfield dual card names (
8b7385e5) - Add mobile Safari bottom clearance (
b25f6e72) - decks: Consolidate active deck count (
6b857957) - decks: Respect finish when switching allocations (
d79ac532) - ai: Process deck questions asynchronously (
395e45d7) - settings: Reject sockets without sessions (
57d6353c) - settings: Authenticate log subscriptions (
93db9fa0) - ai: Make bracket analysis holistic (
d876a9ae) - security: Remediate container vulnerabilities (
34c9a22e) - Sort permanent cards by their front-face type (
4a13eb8f) - jobs: Recover orphaned catalog sync executions (
ab76c650) - catalog: Release write locks between metric refresh batches (
f66e52ef) - catalog: Parse EDHREC commander continuation pages (
10da94f2) - ui: Keep dropdowns and card previews above dialogs (
ecad2d2b) - decks: Pick only active decks and reset skips on play (
a6d8aa14) - Deallocate cards moved to considering (
880d906a) - Exclude proxies from deck pricing (
4c40a2ca) - security: Enforce GraphQL CSRF in every auth mode and make owner sessions revocable (
273c795d) - security: Harden auth lockout recovery and document proxy hardening flags (
d105be16) - ai: Limit consistency advice to card changes (
40b3b696) - Remove unsupported directive from deck allocation requests (
a36f9e36) - Stop deck analysis from labeling suggestions with collection status (
2cee4366) - ios: Load saved server URL inside the native shell (
890a772a) - native: Respect Android system bar insets injected by Capacitor (
6696a3a2)
- Keep container build layers cached across commits (
db2ae210)
- deps: Bump mise-action to 4.3.0 and repair quality CI (
6a6c4ae8) - deps: Bump softprops/action-gh-release from 3.0.2 to 3.0.3 (
e1e62ce1) - deps: Bump docker/setup-buildx-action from 4.2.0 to 4.3.0 (
a2815c9a) - deps: Bump docker/login-action from 4.4.0 to 4.6.0 (
5da53e59) - deps: Bump actions/checkout from 7.0.0 to 7.0.1 (
acc98669) - backlog: Add security and code standard remediation tasks (
bf662741) - backlog: Repair duplicate TASK-30 identifiers (
220330ea) - deps: Resolve JavaScript dependency advisories (
57b9122d) - orb: Speed up setup (
837b7aa8) - backlog: Record published scanner bundle release (
a7101911)
- dev: Generate GraphQL types from an Absinthe SDL dump instead of live introspection (
304df8d1)
- Sort collection by value gain (
219433f6) - Add AI deck analysis and bracket ratings (
524f27d3) - Add one-off deck questions (
d4162e0e) - Persist deck AI question history (
7eaf968a) - ai: Improve deck Q&A accuracy and rendering (
d43d3b75) - Add custom AI deck analysis instructions (
9ee36d13) - Show AI deck analysis progress (
cd148a52) - Apply deck Q&A recommendations (
b5e3959e) - decks: Show Commander Spellbook combos (
ecffe42d) - jobs: Migrate background work to Oban (
fcfdd32e) - ai: Show model metadata for deck insights (
ed90615c) - ai: Expand deck analysis guidance (
9a07d21c) - ai: Refresh all deck analyses (
29a41211) - settings: Add live server logs (
99270b13) - decks: Add weighted random deck picker (
6781fcab) - decks: Allow editing play history (
6cd0895a) - decks: Add Recommander deck recommendations (
fdffc7bf) - decks: Analyze external decklists (
ae695a2c) - Toggle auto-sort summaries between source and destination (
2025693d) - decks: Control random play inclusion and exclude archives from home count (
556cb112) - ai: Frame deck analysis around deck structure, role balance, and synergy (
2d85a681) - api: Add personal deck access keys (#153) (
02656c1c) - appearance: Add color palettes saved on the owner account (
8dcc75ec) - ai: Let the model look up catalog cards during analysis and questions (
a154eaf9) - Filter collection by purchase price, added date, and multiple sets (
b5e893c3) - Add Swap cards workbench for staged deck cuts and adds (
0b122e39) - Add AI chat for cuts and adds in Swap cards (
7cbc7aa4) - Add AI collection status tool that favors free owned cards (
0490f597) - scanner: Add in-browser card scanner with OTA model bundles (
7114d779) - scanner: Make locked sets restrict recognition (
03c98870) - scanner: Scan and show the whole camera image (
c3a8a2bd)
- catalog: Cover search and price queries with indexes (
5c0eb428)
- catalog: Drop unused scryfall_printing_search FTS table (
1cb79307) - catalog: Move deck resolver workflows and Repo access into Catalog actions (
640fc768) - catalog: Split collection and trade contexts into actions and bound auto-sort and export work (
b71ab012) - ai,backup,scryfall: Split contexts into actions, bound deck analysis listing, batch printing reconciliation (
d64298fb) - web: Render shell and login from templates, use configured host for absolute URLs, add CSP (
c44a8f27) - react: Split cards page, validate remote link hrefs, type Prism, initialize AI settings form once (
0e165a30) - decks: Decompose deck detail page, deck stack card, and deck GraphQL documents (
6d38012b) - collection: Decompose collection page, import/export dialogs, and collection GraphQL documents (
dde1f175) - catalog: Move location fetching from the decks context into collection locations (
f9bed03e) - scanner: Move model training to cfbender/oracle (
4bb6789e)
- react: Format files added by the remediation refactors (
f4140bb8)
- web: Read the frontend deck query from its new documents module (
771014a6)
- Harden public share GraphQL (
e0c16847) - Harden remote sharing boundaries (
9d6e7080) - home: Keep search suggestions above action cards (
3e63811e) - Group collection cards by printing (
56810137) - Improve liquid glass dropdown readability (
c5ce00d0) - collection: Prevent card interactions while scrolling (
35c0349a) - ui: Contain dialogs and preserve binder scroll (
ce302faa) - ui: Keep sort menus within viewport (
3f507b10) - Normalize card names and scroll deck picker (
42ff0e5a) - Resolve MDFCs by front-face name (
3455b3c6) - Group Scryfall replacement clauses (
7cd8160f) - cards: Correct card actions and deck options (
44bf6347) - catalog: Exclude non-card Scryfall printings (
490eddb3) - decks: Allow deleting archived decks (
bdf5a108) - decks: Use server commander color identity in deck header and stop clipping mana symbols (
db76da78) - catalog: Remove cards without printings (
55750677) - collection: Repair auto-sort card previews (
bb24f651) - collection: Use market prices for filters and sorting (
004fe4fd) - pricing: Prioritize ManaPool card conditions (
bc0db0ad) - collection: Prevent value rankings mobile overflow (
5e647d23) - pricing: Use vendor market prices (
10e3df28) - web: Repair shared decks and page titles (
bf18d8c9) - web: Use available logo asset on login (
8a8b1fb9) - pricing: Handle special treatment values (
05eb973e) - ui: Hide background scrollbar behind dialogs (
e395cc29) - ui: Fix card menu layering and hover clarity (
f5d7ebfb) - ui: Reset scroll after navigation (
58fbdab6) - decks: Align salt score badge content (
89fa2df0) - collection: Delete cards with lists (
a83e1386) - catalog: Resolve alternate card names (
68f39707) - Prevent sell list import stalls (
f07d4a60) - Prevent duplicate page scrollbar (
45bf9a45)
- Configure Amp orb lifecycle (
e1869686) - orb: Harden first-time setup (
b57f8c51) - Persist workflow and portal configuration (
789a6132) - Optimize orb setup and update dependencies (
fb6fdb86) - Disable Amp commit thread trailers (
37270cb6)
- Share trade lists (
9c35a3d1) - Add Liquid Glass interface style with settings selector (
a9b40c48) - Allow changing collection item printings (
57ecadcc) - Track trade binder quantities (
88f8b515) - trade: Add binder sorting and filters (
c5377218) - Sync paper cards and EDHREC ranks (
d5608953) - decks: Add EDHREC cut actions (
e4e39e49) - decks: Support commander pairings for partners, companions, and backgrounds (
1ff207ea) - pricing: Add multi-vendor pricing engine with selectable price source (
763d8961) - Add selectable deck cover cards (
88721e41) - collection: Add value dashboard (
188a333c) - collection: Add deck availability checker (
92fc7af8) - collection: Add value position actions (
560987f8) - ui: Default to liquid glass theme (
7a01fe94) - Add deck primer (
d808ea6a) - Add EDHREC salt scoring (
2e68c580) - decks: Group cards by salt score (
18876e97) - collection: Support total spend on import (
5f7d6065) - cards: Add EDHREC synergy panel (
a4d5b1cb) - Show deck allocations on card copies (
40484f15)
- Add share link revocation and rotation (
6931509f) - Bound remote ManaVault import resources (
a4f6dd20)
- Consolidate duplicated backend behavior into single owners (
f1ed500a) - frontend: Standardize UI components on Radix primitives (
4f71099c)
- Card search pagination (
7bfe870b) - Card name search (
4e5c2e9b) - Don't lock completely during catalog import (
c48d7be9)
- Swap card advantage and ramp priority (
a5ff0638)
- Recent searches (
537e391a) - Improve deck export (
c7bab6f4) - Scg purchase (
3a8a2e1a) - Edhrec commander categories (
70b3b237) - Trade, wants, diffs (
50f87049) - Change maybe/sideboard to considering (
37c7daf2) - Share trade list (
d6e0e1a6)
- Use scryfall bulk data api for import (
f077dcd9)
- Capacitor build (
450b4fc4)
- More links on card (
a0b61d46) - Add sort to card search (
d8dcfb5c) - Upgrade to TypeScript 7 native compiler (tsc) (
96d76341)
- Fix deck page centering (
ca284c35)
- Stabilize quality gate (
2a395021) - Restore batched allocation candidates (
29c5a06d) - Consolidate single allocation status counts (
1cf98d17) - ui: Adopt Radix dialog behavior (
03d6a678) - dialog: Restore external opener focus (
a26d0e9f) - settings: Preserve auto-sort row mutability (
042d496d) - Isolate auto-sort tests (
2a8934be) - catalog: Isolate cache producer failures (
6ddd7862) - auth: Constrain login return paths (
f9e081f6) - dialog: Satisfy focus restore checks (
a59679ed) - security: Protect authenticated GraphQL mutations with CSRF (
0196bd98) - Fix schema domain contract match (
536ff5d3) - deck: Adapt commander callback input (
ad83a769) - Harden public share cache lookups (
d27e9d07) - Bound preview artifact retention (
187d1528) - Restore preview render queue (
1499bb58)
- deps: Bump softprops/action-gh-release from 3.0.1 to 3.0.2 (#142) (
a28c190d) - backlog: Start independent task wave (
0abad7d5) - backlog: Finalize foundation wave (
99de7815) - deps: Normalize aube lockfile (
4a56306a) - ui: Format dialog changes (
7f7f9553) - settings: Format auto-sort changes (
bda46a4f) - backlog: Start architecture wave (
5fdd948c) - backlog: Complete architecture wave (
d54104b5) - backlog: Start public share hardening (
104b5c20) - backlog: Complete public share hardening (
ccaa8443) - backlog: Start preview artifact caching (
6c85eaca) - backlog: Complete preview artifact caching (
3cad8a9e) - Simplify preview retention flow (
ced3c285) - backlog: Start deck boundary cutover (
5a90f608) - backlog: Complete deck boundary cutover (
874d0528) - Add backlog.md (
b6fef864)
- Cache public preview PNG artifacts (
539fae96)
- settings: Split collection auto-sort rules (
e065db60) - schema: Compose catalog domains (
602a2705) - catalog: Split deck allocation actions (
57e0240c) - deck: Decompose deck detail features (
81871ead) - catalog: Move deck cache boundary (
dde38737) - catalog: Remove deck workflows facade (
22fc1973)
- cache: Satisfy strict credo (
551a1616) - auth: Satisfy strict credo (
aace6712) - catalog: Satisfy strict credo (
a7c3850e) - Format architecture wave (
739a2957) - Format public share hardening (
98efdd2d) - Format preview artifact cache (
1255e609) - catalog: Order deck aliases (
d7b8cb20)
- Harden quality gate (
997bef52) - Restore batching query count contract (
d69e8c6d) - Match auto-sort minimum price label (
01128240) - Query auto-sort price by role (
a27dbb37) - Classify source-less fallback queries (
242479a4) - Assert archived deck after disassembly (
813d6b0e) - Bind share cache deck id (
5889382c)
- Don't count allocated cards in estimated buylist (
32b9f75d) - Header chip on deck shows all cards cost (
7c5c4186) - Count tags for deciding category and theme (
080bc978) - Prevent zip-slip path traversal in backup restore (
d9f9e71a) - Derive auth rate-limit client id from trusted proxy header (
ec1a3fd1) - Allow marking the session cookie Secure and configuring its lifetime (
cd799f4a) - Encrypt cloud backup credentials at rest (
2416686b) - Stop minting atoms from external input in query and EDHRec parsers (
9291bb37) - Avoid recursive chown of the data dir on every boot (
060a187c) - Disable Android auto-backup to keep the session out of backups (
65b8a936) - Keep Android signing secrets off stdout and the process table (
4f722044) - Load all deck cards instead of silently truncating at 500 (
6d5521d5) - Don't render the previous deck under a new deck's URL (
e09e255b) - Reconcile deck cache after partial bulk-mutation failures (
19b2e7bd) - Surface deck-delete failures instead of failing silently (
eb64b763) - Shift-range anchor, share status reset, and pwa title dump (
37ed1e07) - Load all decks instead of silently truncating the list at 100 (
55add072) - Bulk deck allocation (
63940bcc) - Recently added cap to 500 (
707ac2c9) - Deck share view (
b3bb4bd2) - Precommit (
e7553489) - Printing uses default if only one available (
a2e0d93b) - Precommit warnings (
d195132d) - Decklist import (
920a337d) - Add card modal uses partial from search (
367d1460) - Let taps fall through to covered cards in deck stack (
f3aa6916) - Covered-card tap in deck stack only raises, no button fires (
45f39aae) - Stop mobile sticky-hover from arming deck card overlays (
35d8bc3e) - Intercept covered-card touch reveal at the stack level (
c8242e74) - Stop card title overlapping mana cost on mobile (
a98bf711) - Restore deck group masonry columns (
c0a40592) - Show per-card estimate in missing cards buy list (
9776b004) - Keep selecting deck tag when dragging off the dial (
81ec5ad1) - Match card name suggestions with apostrophes (
d8e46be6) - Restore Set as a deck grouping option (
47ca323b) - Deck share page (
47cc3361)
- Pin and checksum-verify mise instead of curl | sh (
d33db1f6)
- Pin GitHub Actions to commit SHAs and add Dependabot (
b4a04c05) - Scope contents:write to a tag-only release job (
28e2c6e1) - Read keytool store password from env, not argv (
a253b318)
- Bump plug (
dc88133a) - deps: Bump actions/checkout from 4.3.1 to 7.0.0 (#121) (
33006448) - deps: Bump docker/build-push-action from 6.19.2 to 7.3.0 (#122) (
aa35fbe0) - deps: Bump docker/setup-buildx-action from 3.12.0 to 4.1.0 (#123) (
76127d3d) - deps: Bump docker/login-action from 3.7.0 to 4.2.0 (#124) (
8bdbc85d) - deps: Bump docker/metadata-action from 5.10.0 to 6.1.0 (#125) (
7f95665c) - Add to design notes (
6c3502ff) - Remove buttons from deck card (
a0afd970) - Bump node to 26 and fix mise precommit issues (
ed6881fb) - Up auto sort debounce to 30 days (
b20eca28) - deps: Bump docker/login-action from 4.3.0 to 4.4.0 (#137) (
fd8cadec) - deps: Bump docker/setup-buildx-action from 4.1.0 to 4.2.0 (#138) (
dd8b9830) - deps: Bump actions/upload-artifact from 6.0.0 to 7.0.1 (#139) (
2dc14ad7) - deps: Bump docker/metadata-action from 6.1.0 to 6.2.0 (#140) (
05c38ede) - deps: Bump actions/download-artifact from 6.0.0 to 8.0.1 (#141) (
22f5b41c)
- Page titles and further tag improvements (
026038aa) - Better categorizing and import logs (
f618f9eb) - Warn when the native server URL uses cleartext http (
8b5b0bd4) - Group by tag (
15209f18) - Filter by allocation status (
1d8b9ec6) - Show cost per filter (
9ab4d636) - Top commanders dome gallery (
f5d1ac21) - Multi-select flat on mobile (
2270e1a0) - Remove mana cost vs production section (
037bb401) - Remove dnd from autosort rules (
22e5338d) - Move quantity tag to top (
76a7c3ab) - Tabs to dropdown on mobile (
d6ac63c5) - Import decklist to board and import list to select mode (
e7a760f5) - Debounce auto sort by a week (
d4103442) - Group deck by price (
418afe3a) - Improve search (
793231b3) - Auto sort by set and release date (
4a9f0d2a) - Archive deck on disassemble (
ae80981d) - Deallocate on select (
7c892b9f) - Group by allocation (
9b841161) - Buylist when allocated (
2d9dbf28) - Delete from card edit (
49c04588) - Remove getting tag on allocation (
b9b1dae3) - Custom deck tags data model and API (
928528dd) - Radial custom-tag button on deck cards (
4f21dad0) - Deck tags sidebar with counts and jump-to-group (
7fdd1110) - Deck detail keyboard shortcuts (
2c7677b7) - Customizable default deck tags (
9c980199) - Faster tag radial and collapsible tags sidebar (
c6167a20) - Group deck by custom tags (
3b104d38) - Smoother collapsible tags sidebar (
f87f96d6) - Adjustable card size across the app (
0029d3ae) - Backfill existing decks with default tags (
14d21d1e) - Refine deck card tagger interaction (
aa2505af)
- android: Stop reading files from shared/intent text (
5733d27c) - Flag externally-shared imports and require review (
ff49c51d) - Require PHX_HOST in prod instead of defaulting to example.com (
8859854d) - Warn at boot when auth is disabled in prod (
d61ab629) - Read the CSRF token per request instead of once at module load (
ea198c30) - Only render http(s) external URLs from third-party data (
c23a8ad3) - Hold deck tag feedback text visible longer (
2b3c868d) - Make deck tag feedback snappier (
1a0504d7)
- Stop double-decoding the Scryfall bulk payload (
347233a8) - Defer EDHRec printing loads to the batched dataloader (
a4dd7f47) - Use the NOCASE index for case-insensitive card-name lookups (
681b8e08) - Batch allocation-status computation in bulk-allocate preview (
65fbbdca) - Preload deck_card->deck in the deck_allocations dataloader batch (
d62489cd) - Run Scryfall syncs off-process with in-flight dedup (
f1f3b4d8) - Bulk-resolve scryfall_id rows in collection import preview (
2a4a2e21) - Batch fetches in bulk collection/deck-card mutations (
ff8b5328) - Stop caching by whole summaries map; surface cache failures (
811fd349) - Paginate the decks connection at the database level (
ff81e10f) - Short-circuit and linearize card-name suggestion matching (
bf8afe9e) - Update deck-card allocation in cache instead of refetching everything (
92eb56b7) - Memoize collection grid tiles to skip re-renders on selection toggle (
778fecc7) - Fetch only a primary printing for EDHREC cards (
812844f2) - Merge collection pagination in the Apollo cache via a field policy (
eb5161cd) - Keep prior deck analysis visible while recomputing (
92317818) - Memoize deck-pull readiness scans instead of running them every render (
4e7ffb9c) - Allocate deck pull list in parallel instead of serially (
f17d9c2c) - Lazy-load the Prism/ogl WebGL background on the home route (
0c7d790c) - Throttle EDHREC scroll persistence and stop mirroring to localStorage (
ded443c2) - Lazy-load card-image and image-summary-card images (
65eb919f) - Batch EDHRec collection-status queries across recs/cuts (
605b4a4d) - Apply bulk deck allocation in a single transaction (
94bafd40) - Select all collection items by fetching ids only (
1adb0913) - Add server-side bulk update/delete deck-card mutations (
7c943a09) - Batch collection status for EDHRec commander-page sections (
ab89d55a) - Batch EDHRec card resolution across a response (
a6c6c1b6)
- Parse collection-import CSV with NimbleCSV (
f5888cf6) - Extract shared price SQL fragments into PriceFragments (
c1054c9e) - Share card/printing scalar search predicates via named bindings (
5358c677) - Reuse AllocationStatus in EDHRec CollectionStatus (
e605e4c0) - Remove the unused duplicate node resolver (
7bac5c80) - Collapse the allocationError nested ternary into find() (
7d1404d9) - Group DeckDetailContent props into cohesive objects (
bfedb1a1) - Remove dead deck code, share compareDeckCards, drop stale cast (
0a37b70c) - Extract useDeckMutation for the deck-card allocation wrappers (
475c9cba) - Use selection set for cards selection (
6a6a849e) - Switch collection buttons to icon buttons (
0ed6e994) - Unify deck and collection add-card dialogs (
691e8882)
- Cover custom deck tag cache helper and formatting (
bfc5c493)
- Mobile tap (
55ad3045) - collection: Harden action menus (
003bee19) - decks: Tighten gallery header hierarchy (
356985e4) - decks: Teach gallery loading states (
aba82bcc) - decks: Expose gallery actions and readiness (
c8bc8334) - decks: Place quick actions on cards (
6cc91c65) - ui: Improve mobile touch targets (
80f4fd37) - decks: Expose accessible card controls (
d49936f1) - decks: Harden deck states and diagnostics (
c61c5312) - decks: Reduce desktop card controls (
845de6bc) - decks: Tuck readiness behind modal (
8f1a432b) - decks: Separate readiness modal actions (
dde91db4) - decks: Keep mobile card controls compact (
0cc39c32) - decks: Move card readiness work into modal (
2e19ecb8) - decks: Restore selection affordance flow (
37877f1b) - Edhrec card name overflow (
b94360a0) - Collection views (
a8c9738a) - Click through on menu (
f81b3367) - Card component click through and style (
d7170ad6)
- Impeccable (
dcc1f7f4) - collection: Polish vault UI details (
72ed927c) - decks: Remove unused deck type (
58bfb9cd) - New logo (
a9b44da9)
- Edhrec card pops up modal instead (
b0e6f545) - collection: Expose core collection actions (
3f73182d) - collection: Distill card filters (
6be9bd72) - collection: Add pull workflow shortcuts (
35159073) - cards: Improve search result confidence (
77fddd16) - decks: Surface deck readiness actions (
640a1a69)
- Readiness to pull list (
fd673a36)
- Edhrec checks side/maybeboard (
4ab2e25c) - Editing handles allocation (
dee04f78) - Don't load app with query string (
5d204849) - Broaden cache invalidation for owned counts (
75a6a74b)
- Remove unique card count from deck (
2987f11a)
- Sell by quantity (
a7ed876d) - Add nebulex cache foundation (
9bdc850b) - Cache catalog read paths (
1d5ea0a0) - Cache deck field batches (
fd398c8c)
- Cloud backup retention (
f863bf80) - Show back image (
b48f9d49) - Collection quantity filter (#61) (
c4e2646b) - Sell cards (
f01c1ff9)
- Apply remaining changes (#63) (
28fd739c)
- Local dev optimize deps (
a2e6fb04) - Don't auto-sort deck allocated cards (
9e319658) - Grab parent tags (
785f31d3)
- Deck page fixes (
4602e89b)
- Change land and counter icons (
532138ea)
- Preview png (
680015c2) - Light mode card view (
bef91e91) - Edhrec deck status (
d79c5578) - Mobile deck view (
f089aaa1) - Deck share page (
cb490153) - Deck card menu (
f48b3edb) - Prevent PWA asset-reload from triggering in native Capacitor shell (#57) (
6d9dc31d)
- Preview image (
5ad57fac) - Gamechangers (
0c753254) - Deck view improvements (
1bfa4cde) - Deck optimistic updates (
b5c380de) - Optimize printings (
0f513c13)
- Shorten "owned but unavailable" badge label to "unavailable" (#59) (
aca99319) - Stop forcing external links into the native WebView (#60) (
460f1c1b)
- Autosort (
61216f8c) - Auto sort improvements (
ced6d446) - Show foil status on auto sort preview (
869a52b0) - Don't backup scryfall catalog (
62bc8301) - Pull list (
764d1a7e) - Import purchase price (
05117ee7) - Store sort (
8a3489d3) - Disassemble deck (
49d984cc) - Edit from card view (
eb85c4de) - Bulk edit (
6475e034) - Autocomplete set in filter (
6b0a6ca4) - Toast on modal close (
55d43ae3)
- Public mutation guard (
b983d375)
- Don't count basic lands for allocation (
542ea819) - Healthcheck (
541bbe78) - Deck pricing (
356713f5) - Allocate only for mainboard (
51eb88b4)
- Self-hosting healthcheck (
17ed5a7b)
- Share deck buy list (
e7fb1d24)
- Switch to alpine image (
c0768c9c)
- Some deck loading slowness (
ff85b79a)
- Update README.md (
2116eeea)
- Split out large files (
31b1d9e5) - Use dataloader for cards/collection (
bfa95f13) - More dataloader and batching (
055fdb8e) - Remove deprecated Repo.transaction/2 (
e4d2efdc) - Relay (
41fa5b6b)
- Android app attachment loading (
3cfeed35)
- Deck stats and fixes (
36add790)
- Put capacitor native methods in header (
e77d3a2a)
- Deck legality (
1a65ce54)
- Import scryfall oracle tags (
9f17efaf) - Show tags on card view (
f5d8989d) - Show card rulings (
a1648b03) - Show card legalities (
46243ef6) - Group decks by category and theme (
d1c9696d) - Deck page fixes and icons (
fff1f274)
- android: Load shared collection imports (
8ba05779)
- Persist filter on search (
dc782cbd)
- Add capacitor plugin headers (
e72b1014)
- Import (
310cab70)
- Android app (
0066dba0)
- Session cookies (
cfbf9d01)
- Android share (
abf7ab3a)
- Full screen card view for shared deck (
25892f8d)
- Ip banning (
7c64cebf) - Expose more features to shared deck view (
3cdd923b) - Sort by added date (
5179d7de)
- Use config_env instead of Mix.env (
283a39d6)
- Apk build (
14613c7a)
- App fixes (
977467b4)
- Sign release app and document custom domain (
1f4c8da8)
- Deck page buylist (
71564893)
- Deck page N+1 (
a09ae3ca)
- Reveal card actions on mobile tap (
20c2987f) - Move server config to settings once configured (
c8be6d8a)
- Code cleanup (
fb7a877f)
- Scanner logging for prod (
ae5e99f6)
- Cloud backups (
951e609c) - Commit asset versioning (
82664bc3) - Force sync catalog (
7ef15a42) - Loosen art first threshold (
7957fbe6) - Deletes and standardize modals (
6ea30527) - Commander colors (
13f0e841)
- Grype vulnerabilities (
bea730e8) - Scanner/cacheing (
d3353aa6) - Assets root (
9bf1e7d3) - Scanner improvements (
e1437f25) - Hide allocated cards from locations (
ba591bd1) - Capacitor build (
9e485322) - Browser chunk recovery and capacitor build (
d18f5965) - Scanner improvements (
fa4d24c3) - Start scan session (
3f842a54) - Don't count sideboards in deck count (
56ff67c1)
- Proxy (
51706f4f) - Ocr title fast path (
12446f92) - Support openvino for ocr (
b92c14b6) - Publish openvino container (
400208ba) - Scanner footer crop (
c0151c9d) - Delete scanned card (
031cbbc8) - Price tracking (
5fc13742) - Apk build and setup (
3301fa46) - Show collection count on card search (
c0a21bd2) - Fullscreen card preview (
f29fa18c)
- Symbols sync worker (
8a076580)
- Split out catalog (
e417d4a2)
- Add release changelog tooling (
718d7c62)
- Fix OCR runtime container dependencies (
c4fe0c56)