Owned Cards Library
Upload .txt or .csv lists. We’ll extract names and keep a de-duplicated library for the web UI.
{% if error %}
{{ error }}
{% endif %}
{% if notice %}
{{ notice }}
{% endif %}
Export TXT
Export CSV
{{ count }} unique name{{ '' if count == 1 else 's' }} {% if count %}• {{ count }} shown{% endif %}
{% if names and names|length %}
Select all shown
Remove selected
Remove visible
Export visible TXT
Export visible CSV
{% endif %}
{% if names and names|length %}
Sort: A → Z
Sort: Type
Sort: Color
Sort: Tags
Sort: Recently added
All Types
{% for t in all_types %}{{ t }} {% endfor %}
All Themes
{% for t in all_tags %}{{ t }} {% endfor %}
All Colors
{% for c in all_colors %}{{ c }} {% endfor %}
{% if color_combos and color_combos|length %}
──────────
{% for code, label in color_combos %}
{{ label }}
{% endfor %}
{% endif %}
Clear
{% endif %}
{% if names and names|length %}
800 %}data-virtualize="1"{% endif %}>
{% for n in names %}
{% set tags = (tags_by_name.get(n, []) if tags_by_name else []) %}
{% set tline = (type_by_name.get(n, '') if type_by_name else '') %}
{% set cols = (colors_by_name.get(n, []) if colors_by_name else []) %}
{% set added_ts = (added_at_map.get(n) if added_at_map else None) %}
{{ n }}
{% if cols and cols|length %}
{% for c in cols %}
{% endfor %}
Colors: {{ cols|join(', ') }}
{% endif %}
{% endfor %}
{% else %}
No names yet. Upload a file to get started.
{% endif %}
{% endblock %}