The repo had no upstream ancestry: a whole tree arrived in one commit in May, so
every update meant re-applying our patches by hand onto a fresh checkout, and a file
Element moved would take our lines with it silently.
The real base was found by measuring tree distance across develop rather than trusting
the changelog: deadd548, not the v1.12.17 tag. With that set as a temporary graft, this
merge computed as a proper three-way merge - 32 conflicts instead of 1757.
Resolutions, each decided rather than defaulted:
- 24 GitHub workflows stay deleted; we build on GitLab CI.
- MImageBody.tsx is gone upstream, migrated to MVVM. Our ClamAV error label moved into
ImageBodyViewModel.computeErrorLabel, ahead of the DecryptError branch, matching what
VideoBodyViewModel and FileBodyViewModel already do.
- Upstream extracted the room list item body into RoomListItemContent. Our call
participants list and its getInitials helper moved there; both sides' CSS classes and
both sides' props are kept.
- matrix-js-sdk follows upstream at 42.2.0 - our git ref pin was a workaround for a
stale ref, and following upstream is the point of this merge.
- Element Call stays ours. Checked before deciding: @element-hq/element-call-embedded
is referenced nowhere in the tree, while webpack.config.ts needs
@sorb/threadnet-call-embedded, so taking upstream's line would have deleted the noise
suppression from #0054 without a word.
The lockfile was regenerated with pnpm 11.20.0, which upstream now requires through
devEngines. CI already runs corepack enable, and onFail: download makes it fetch that
version by itself.
Not yet accepted: this needs a build and the ClamAV functional test - send an encrypted
file, receive a rejected one - before it goes near main.
48 lines
1.6 KiB
JavaScript
48 lines
1.6 KiB
JavaScript
#!/usr/bin/env node
|
|
/*
|
|
Copyright 2026 Element Creations Ltd.
|
|
|
|
SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
|
|
Please see LICENSE in the repository root for full details.
|
|
*/
|
|
|
|
/**
|
|
* Script to generate incremental Nightly build versions, based on the latest Nightly build version of that kind.
|
|
* The version format is YYYYMMDDNN where NN is in case we need to do multiple versions in a day.
|
|
*
|
|
* NB. on windows, squirrel will try to parse the version number parts, including this string, into 32-bit integers,
|
|
* which is fine as long as we only add two digits to the end...
|
|
*/
|
|
|
|
import parseArgs from "minimist";
|
|
|
|
const argv = parseArgs<{
|
|
latest?: string;
|
|
}>(process.argv.slice(2), {
|
|
string: ["latest"],
|
|
});
|
|
|
|
function parseVersion(version: string): [Date, number] {
|
|
const year = parseInt(version.slice(0, 4), 10);
|
|
const month = parseInt(version.slice(4, 6), 10);
|
|
const day = parseInt(version.slice(6, 8), 10);
|
|
const num = parseInt(version.slice(8, 10), 10);
|
|
return [new Date(year, month - 1, day), num];
|
|
}
|
|
|
|
const [latestDate, latestNum] = argv.latest ? parseVersion(argv.latest) : [];
|
|
|
|
const now = new Date();
|
|
const month = (now.getMonth() + 1).toString().padStart(2, "0");
|
|
const date = now.getDate().toString().padStart(2, "0");
|
|
let buildNum = 1;
|
|
if (latestDate && new Date(latestDate).getDate().toString().padStart(2, "0") === date) {
|
|
buildNum = latestNum! + 1;
|
|
}
|
|
|
|
if (buildNum > 99) {
|
|
throw new Error("Maximum number of Nightlies exceeded on this day.");
|
|
}
|
|
|
|
console.log(now.getFullYear() + month + date + buildNum.toString().padStart(2, "0"));
|