Skip to content

Migrate desktop to TypeScript and Oxc; bundle the refreshed guide - #33

Merged
bluehexagons merged 57 commits into
mainfrom
feature/typescript-migration
Oct 11, 2026
Merged

bluehexagons merged 57 commits into
mainfrom
feature/typescript-migration

Conversation

@bluehexagons

Copy link
Copy Markdown
Owner

Summary

Migrate the Electron wrapper, Forge configuration, and build/test tools to strict TypeScript, replace ESLint/Prettier with oxlint/oxfmt, and require Node.js 24+. Bundle the full Food Guide migration and interface refresh through the updated app/foodguide submodule.

Desktop implementation

  • Compile maintained sources in src/ into dist/; use dist/index.cjs as the runtime entrypoint. Starting, testing, asset generation, packaging, and making distributables build the wrapper and embedded guide first.
  • Type the Electron startup/navigation code, Forge configuration, asset generation, process runner, and package verifier. Separate development checks from generated output and retain the guide's own lint/format configuration.
  • Verify the actual ASAR archive, including recursively imported compiled guide modules, sprite assets, runtime dependencies, and licenses. Exclude TypeScript sources/declarations, build configuration, tests, and guide development dependencies. Normalize archive paths across Windows and Unix.
  • Strengthen subprocess startup/timeout handling and require checks, audits of both dependency sets, native smoke tests, and package verification in build/release workflows. Refresh source, packaging, release, and maintenance documentation.
  • Restore native zoom menus/shortcuts and enable pinch zoom. Keep sandboxing, context isolation, disabled Node integration, restricted local navigation, vetted HTTPS external links, and production Electron fuses.
  • Use single-instance startup: subsequent launches restore/focus an existing window, or recreate a window when the macOS app remains running after its last window closes. Installer events bypass normal startup.
  • Offer File → New Window / Ctrl/Cmd+N and internal guide links for optional additional sandboxed windows. Each window keeps its own pot, game context, picker views, and selected inventory, while inventories, cookbook, theme, and language synchronize through the profile.
  • Add Copy Link to Current Section and use public HTTPS addresses for explicit guide shares, without exposing the installation's file path.

Bundled guide changes

The companion Food Guide PR #87 contains the detailed implementation and validation summary. This pin includes the whole branch, including:

  • Strict TypeScript data/UI/calculation/build sources, typed library exports, safer lookup and variant handling, Node 24, and Oxc tooling.
  • Grouped ingredient cards, denser Compact layouts, relevance-aware Auto sorting, All/Practical/Everyday cooking views, selected-only quantity/removal controls, stable error feedback, and keyboard shortcuts.
  • Complete-dataset statistics browsing with consecutive recipe grouping, independently paged expanded combinations, configurable page sizes, responsive calculations, pause/resume, live/final refresh, and Simulator handoff that preserves the analysis on return.
  • Consistent character-adjusted values and sorting; improved table controls, result highlights, keyboard focus, touch behavior, responsive layouts, contrast, forced colors, and Firefox support.
  • Section/game/highlight URLs and explicit share snapshots; per-window pots; synchronized named inventories; a personal cookbook with ingredient icons and recalculated recipe outcomes; validated JSON import/export and storage-failure recovery.
  • Updated English, Spanish, and Chinese UI translations, polished supporting sections/forms/dialogs/cookbook, and refreshed documentation.

Merge order

Merge Food Guide PR #87 first. The desktop submodule currently pins 157ea288ba194ca28be6ecac9bf3928b71b3eae7. If the guide is squash-merged or rebased, repin app/foodguide to the resulting commit on guide main and rerun desktop checks before merging this PR. A guide merge commit preserves the existing pin.

Validation

  • Local npm run check passes: 32 wrapper tests (31 pass; one Windows-specific test skipped on Linux), 193 embedded guide unit tests, lint, format, and strict wrapper/Forge/guide type checks.
  • The native Electron smoke test passes with a temporary profile, covering zoom, ingredient picking, keyboard/table controls, analyzer grouping/paging/refresh/handoff, independent windows, shared inventories/cookbook, sharing links, saved settings, and navigation/sandbox restrictions.
  • Audits of both dependency sets report zero vulnerabilities.
  • CI passes on the final commit and builds distributables on Linux, Windows, and macOS, including native Electron tests, ASAR verification, and macOS disk-image verification.

@bluehexagons
bluehexagons merged commit fdb50ea into main Oct 11, 2026
8 of 9 checks passed
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