Skip to content

Rebrand to MifKit and add Converter registry - #1

Merged
fedyunin merged 1 commit into
mainfrom
feat/converter-registry
May 19, 2026
Merged

Rebrand to MifKit and add Converter registry#1
fedyunin merged 1 commit into
mainfrom
feat/converter-registry

Conversation

@fedyunin

Copy link
Copy Markdown
Owner

Summary

  • Renames the project from MifMapXL → MifKit (1.0.4 → 1.1.0) so additional converters (KML/KMZ ↔ MapInfo, GeoJSON, Shapefile) fit naturally alongside the existing Excel exporter.
  • Introduces a Converter contract and registry under src/core/converters/. New formats become one folder + one fixture + one entry — GUI and CLI will pick them up automatically.
  • Wraps the existing Excel export engine as the first registered converter (mif-to-xlsx). Behavior is byte-identical to 1.0.4.

What changed

  • Rename: package.json (name, version, appId, productName, artifactName), main window title, renderer header, README (with converter roadmap and redirect note), PROJECT_CONTEXT.md preamble, tmpdir prefixes in two tests.
  • New src/core/converters/:
    • types.js — JSDoc Converter contract (id, inputs, outputs, options schema, async run)
    • registry.jsregister/get/list/applyDefaults/validateOptions with strict shape validation
    • index.js — auto-registers built-in converters on first import
    • mif-to-xlsx/index.js — thin adapter over the existing convert.js engine
  • UI and worker untouched in this PR. They keep calling convert.js directly — switching them to dispatch through the registry will land alongside the second converter so the contract is validated by two real implementations.

Tests

62 passing (55 existing + 7 new):

  • registry rejects malformed converters, forbids duplicate ids
  • applyDefaults merges schema defaults with explicit values
  • validateOptions reports type/enum/range violations
  • mif-to-xlsx is registered by default
  • end-to-end dispatch through the registry produces a valid .xlsx for both folder and explicit-file inputs
npm test

Test plan

  • npm test is green
  • manual smoke: npm run dev, run a conversion, confirm same output as 1.0.4
  • verify the auto-redirect from old GitHub URLs works for clones using MifMapXL.git

Follow-ups (next PRs)

  1. feat/kml-to-mif — port the existing Python KML→MIF/MID converter to Node.js as the second registered converter; validates the contract with a real second implementation.
  2. feat/dispatch-ui — switch renderer to render its options panel from the converter schema; switch worker to dispatch by converterId.
  3. feat/cli — add bin/mifkit powered by the same registry (mifkit convert <id> <input> <output> --flags).

🤖 Generated with Claude Code

Renames the project from MifMapXL to MifKit so additional converters
(KML/KMZ, GeoJSON, Shapefile, ...) can live alongside the existing
Excel exporter without the name implying a single-purpose tool.

Adds a Converter contract and registry under src/core/converters/:
  - types.js     JSDoc contract (id, inputs, outputs, options, run)
  - registry.js  register / get / list / applyDefaults / validateOptions
  - index.js     auto-registers all built-in converters
  - mif-to-xlsx/ first converter, wraps the existing convert.js engine
                 so behavior is byte-identical to 1.0.4

GUI and CLI will dispatch through the registry; new converters become
one folder + one fixture + one registry entry. UI and worker are not
touched in this PR — wiring them through the registry comes next, once
the second converter (kml-to-mif) is in place to validate the contract.

Rename touches: package.json (name, version 1.1.0, appId, productName,
artifactName), main window title, renderer header, README (with
converter roadmap table and a note that old GitHub URLs auto-redirect),
PROJECT_CONTEXT.md preamble, and tmpdir prefixes in two tests.

Tests: 55 existing + 7 new (registry validation, default merging,
converter dispatch through registry, file-list input mode). All green.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@fedyunin
fedyunin merged commit a4da148 into main May 19, 2026
1 check passed
@fedyunin
fedyunin deleted the feat/converter-registry branch May 19, 2026 18:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant