Skip to content

v1.2.0

Latest

Choose a tag to compare

@JamesEnglish1028 JamesEnglish1028 released this 17 Oct 01:33
· 14 commits to main since this release

v1.2.0 — Stable UI & MARC upload fixes (2025-10-16)

Summary

This release fixes MARC upload reliability and restores a stable UI after a theming experiment was reverted. The important user-facing outcome is that MARC files fetched via CORS proxies are now preserved as binary, uploaded unchanged, and successfully parsed by the backend.

Highlights

  • Fix: Preserve MARC binary payloads from CORS proxies (AllOrigins, corsproxy.io)
    • Detects/decodes proxy-wrapped payloads (data: URIs and raw base64).
    • Normalizes bytes into a Blob/File before sending to backend.
  • Fix: Uploads use FormData with binary File objects and do not manually set Content-Type (prevents multipart corruption).
  • Debug: Optional binary debug logging — logs hex of first 32 bytes for upload/download verification (enable with VITE_UPLOAD_DEBUG).
  • Uppy improvements:
    • Preserve original filename and pass through as label for UI and TSV output.
    • Better file-added / complete handling.
  • UX & UI:
    • Added Upload icon to Manual tab, improved icon sizing and ARIA labels.
    • Per-tab cache preserved across sessions; Settings modal with "Clear cached results".
    • Abort/cancel handling for fetches and uploads (Clear cancels in-flight operations).
  • Revert: Removed experimental semantic theming (CSS variables) that introduced regressions; restored Tailwind utility classes and original styles.

Why this release

Users were seeing backend 500 errors when uploading MARC files from the frontend. Root cause: some CORS proxies returned MARC bytes wrapped as text (data: URIs or base64); the client forwarded that text, which corrupted the multipart binary upload. This release ensures the client decodes and reconstitutes raw bytes so the backend receives identical data to a direct curl upload.

Upgrade / Install

To fetch this tag locally:

# fetch tags and check out the release
git fetch --tags
git checkout v1.2.0

Run locally:

npm install
npm run dev

Build for production:

npm run build
# preview the production build
npm run preview

Configuration / Environment

Set these Vite environment variables (via .env or export in shell):

  • VITE_API_URL — backend URL (example: https://your-backend.example.com)
  • VITE_API_TOKEN — optional Bearer token for the backend
  • VITE_UPLOAD_DEBUG — set to "true" to enable byte-level hex debug logs
  • VITE_FORCE_MIME — set explicitly to force upload MIME to application/marc (use sparingly)

Example (zsh):

export VITE_API_URL="https://api.example.com"
export VITE_UPLOAD_DEBUG="true"
npm run dev

Testing notes (manual checks performed)

  • Upload a local .mrc/.marc file via the Manual tab and verify conversion results.
  • Fetch a MARC file URL (Palace/AllOrigins) and convert; with VITE_UPLOAD_DEBUG=true, confirm the hex of the first 32 bytes for the downloaded file and the uploaded file match.
  • Verify Uppy Dashboard displays filename correctly, and TSV export/copy uses that filename/label.

Edge cases:

  • If proxies are down/unreliable, users should download the MARC file and upload manually.
  • Browser Clipboard API and Download behaviours differ across platforms; report browser-specific issues if observed.

Files changed (high-level)

  • Added: CHANGELOG.md
  • Edited:
    • services/marcService.ts — proxy decoding, file normalization, binary debug logging
    • components/InputArea.tsx — Uppy integration changes, upload icon, proxy fetch & decode flows
    • components/KbartTable.tsx — UI/copy/download handling polish
    • index.html — restored head (Tailwind CDN), cleaned Uppy CSS overrides
  • Removed / neutralized: temporary index.css (experimental theming)

Release artifacts

  • Production bundle (build): run npm run build to produce dist/.
  • If you want, I can attach a zip of the dist/ build to this release (I can create it locally and upload or attach it programmatically if you provide a GitHub token).

Changelog / Notes

See CHANGELOG.md in the repo for a short summary. (Also included in the release notes above.)

Credits & follow ups

  • If you want the current working-tree changes (icons, index.css, logo file) included in the release commit, I can stage/commit them and create a patch release (e.g. v1.2.1).
  • I can also create the actual GitHub Release for v1.2.0 and attach a dist/ ZIP programmatically if you provide a GitHub token with repo/repo:release permissions.

Paste this into the GitHub "Create a release" form to publish.