Skip to content

Release 0.4.0: fix the macOS and Windows build and the AppImage test - #27

Merged
olehwebdev merged 2 commits into
mainfrom
release/0.4.0
Sep 26, 2026
Merged

olehwebdev merged 2 commits into
mainfrom
release/0.4.0

Conversation

@olehwebdev

@olehwebdev olehwebdev commented Sep 26, 2026 •

Copy link
Copy Markdown
Owner

What and why

Two fixes found by running the Release workflow for 0.4.0. Neither changes anything a user of 0.3.0 would see, so the CHANGELOG is unchanged. 0.4.0 has no release, draft or tag yet. Both commits continue release/0.4.0 after its version commit, as CONTRIBUTING › Releasing step 3 describes for a failed run.

1. The macOS and Windows build (fc59921)

Run 14 failed to build on macOS and Windows:

[MISSING_EXPORT] "ActionFields" is not exported by ".../RuleForm/ActionFields.ts".
[MISSING_EXPORT] "RuleNotes" is not exported by ".../RuleForm/RuleNotes.ts".

The rule form's folder has two pairs of files whose names differ only in case:

  • ActionFields.tsx sits beside actionFields.ts;
  • RuleNotes.tsx sits beside ruleNotes.ts.

On a file system that ignores case, ./ActionFields finds actionFields.ts first. That file exports no component, so the build breaks. Linux, and so CI, only ever saw the .tsx files.

The fix renames the two helpers:

  • actionFields.ts becomes ruleActionFields.ts, named after the RULE_ACTION_FIELDS it holds;
  • ruleNotes.ts becomes ruleNotesFor.ts, with its function renamed to match.

olehwebdev/console-editor#28 adds a lint:structure check so this is caught on every pull request.

2. The AppImage update test (9deba18)

Run 15 built everything and passed every install test but one: "Update the AppImage" failed on Linux x64 and arm64 with:

Timed out waiting for the AppImage to install its desktop entry

The Linux test job installs the .deb first, then updates the AppImage on the same runner. Since 8113375, the app leaves the desktop to an installed package's entry (SPEC §10). So the AppImage saw the .deb's /usr/share/applications/console-editor.desktop and, as designed, installed none of its own. The last time the Linux test jobs ran was for 0.3.0, before that change, so this is the first release to meet it.

The .deb step now:

  • removes the package once its own test passes (named by dpkg-deb -f <deb> Package);
  • checks that its desktop entry went with it.

The AppImage is then tested as a user who has only the AppImage. The SPEC's release-workflow paragraph says so.

How it was tested

Build fix:

  • Reproduced the failure. I simulated a case-insensitive file system by copying every file under the case of its case-clashing sibling. On the old version commit f2059a7, electron-vite build then fails with the same two MISSING_EXPORT errors as the macOS and Windows jobs. The fixed tree builds.
  • In run 15, the installers built and the install tests passed on macOS (both), Windows x64 and Windows on ARM (including its update test), and the Linux .deb tests passed.

Checks:

  • npm run typecheck, lint:fsd, lint:structure, lint, lint:unused, lint:duplicates and lint:secrets pass.
  • npm test passes (1,171), and so does xvfb-run -a npm run test:e2e (109).

Workflow fix:

  • The YAML parses.
  • dpkg-deb -f <deb> Package prints the package's name, checked on a throwaway package.
  • The full run is run 16, with Draft release ticked.

Checklist

  • Comes from a git flow branch into main: the release/0.4.0 branch, fixing its release
  • npm run typecheck, npm run lint:fsd, npm run lint:structure, npm run lint, npm run lint:unused, npm run lint:duplicates, npm run lint:secrets, npm test and npm run test:e2e pass
  • docs/SPEC.md describes any behaviour this changes (the release workflow's .deb step)
  • User-visible changes are noted under [Unreleased] in CHANGELOG.md (none: the code was never released)

Releasing (for the maintainer)

  1. Wait for the Release workflow's draft of v0.4.0 on 9deba18 (run 16).
  2. main already has this branch's earlier commits, so GitHub asks you to update the branch. Use Update branch (not rebase), and don't draft again.
  3. Merge with a merge commit.
  4. Check that git ls-remote --tags origin v0.4.0 prints nothing, then publish the draft.

ActionFields.tsx sat beside actionFields.ts, and RuleNotes.tsx beside
ruleNotes.ts. On macOS and Windows, whose file systems ignore case,
`./ActionFields` found actionFields.ts first, which exports no component,
so the Release workflow's build failed there while Linux (and CI) passed.

actionFields.ts becomes ruleActionFields.ts, after RULE_ACTION_FIELDS, and
ruleNotes.ts becomes ruleNotesFor.ts, its function ruleNotesFor.
The Linux test job installs the .deb, then updates the AppImage on the
same runner. Since the app leaves the desktop to a package's entry, the
AppImage saw the .deb's /usr/share/applications/console-editor.desktop,
installed none of its own, and the update test timed out waiting for it
on Linux x64 and arm64. The .deb step now removes the package once its
own test passes, and checks its desktop entry went with it.
@olehwebdev olehwebdev changed the title Release 0.4.0: fix the macOS and Windows build Release 0.4.0: fix the macOS and Windows build and the AppImage test Sep 26, 2026
@olehwebdev
olehwebdev merged commit b42471c into main Sep 26, 2026
6 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