50 Commits
Author SHA1 Message Date
SalastilandClaude Sonnet 5.5 db495d2e98 Merge branch 'development'
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-10 16:37:52 -04:00
Salastil 74af46a6f2 Merge branch 'development' 2026-10-09 15:40:06 -04:00
Salastil 5929fff8bb Merge branch 'development' 2026-10-09 15:21:54 -04:00
Salastil 7f9f903af5 Merge branch 'development' 2026-10-08 23:51:20 -04:00
Salastil fb424ca763 Merge branch 'development' 2026-10-07 18:06:12 -04:00
Salastil 92712363bd Merge branch 'development' 2026-10-07 17:47:59 -04:00
Salastil b8910401c3 Merge branch 'development' 2026-10-04 16:31:41 -04:00
Salastil 117bbc0e67 Merge branch 'development' 2026-10-03 21:09:46 -04:00
Salastil 5a97dd4a44 Merge branch 'development'
# Conflicts:
#	nobilis
2026-10-03 16:36:54 -04:00
SalastilandClaude Opus 5.5 63b271ab35 Merge branch 'development'
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-01 20:02:19 -04:00
Salastil 95e30d7509 Merge branch 'development' 2026-09-30 22:11:55 -04:00
Salastil c73d77b264 Merge branch 'development' 2026-09-30 22:08:17 -04:00
SalastilandClaude Opus 5.5 c7d615e526 Point the PKGBUILD at GitHub, and drop its comments
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-30 16:31:04 -04:00
Salastil c6ec39a92a Merge branch 'development' 2026-09-30 16:27:32 -04:00
SalastilandClaude Opus 5 2e0c7aff57 Merge branch 'development'
Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-28 16:45:23 -04:00
Salastil b12be620b0 Merge branch 'development' 2026-09-22 21:41:12 -04:00
Salastil 733e568f1b Merge branch 'development' 2026-09-13 02:49:03 -04:00
Salastil bd03bc77d7 Merge branch 'development' 2026-09-12 20:53:13 -04:00
Salastil d7e0d83227 Merge branch 'development' 2026-09-12 20:41:20 -04:00
Salastil 9252c5e15f Merge branch 'development' 2026-09-12 20:25:22 -04:00
Salastil caff648905 Merge branch 'development' 2026-09-12 19:46:12 -04:00
Salastil 3b0e80ff8f Merge branch 'development' 2026-09-12 17:57:43 -04:00
Salastil 6df2e7f8af Merge branch 'development' 2026-09-12 15:23:31 -04:00
Salastil 9fc3bb88ef Merge branch 'development' 2026-09-12 15:09:15 -04:00
Salastil 4a59b43b65 Merge branch 'development' 2026-09-12 13:20:01 -04:00
Salastil 235ebd5635 Merge branch 'development' 2026-09-12 13:12:51 -04:00
Salastil 43daacc840 Merge branch 'development' 2026-09-12 12:42:39 -04:00
Salastil feeba3be13 Merge branch 'development' 2026-09-12 11:18:41 -04:00
Salastil 30bc3f640f Merge branch 'development' 2026-09-12 11:04:26 -04:00
Salastil 3d648cc56d Merge branch 'development' 2026-09-12 10:45:36 -04:00
Salastil 7839bc43da Merge branch 'development' 2026-09-12 10:41:34 -04:00
Salastil 79d41401a9 Merge branch 'development' 2026-09-12 10:36:40 -04:00
Salastil f950b2930d Merge branch 'development' 2026-09-12 10:23:27 -04:00
Salastil 41c2677638 Merge branch 'development' 2026-09-12 10:04:31 -04:00
Salastil edd3d37e83 Merge branch 'development' 2026-09-12 09:52:19 -04:00
Salastil 84c1f0767d Merge branch 'development' 2026-09-12 01:54:31 -04:00
Salastil 5c09919328 Merge branch 'development' 2026-09-11 23:50:16 -04:00
Salastil f2377756a9 Merge branch 'development' 2026-09-11 23:42:31 -04:00
Salastil e9573e5b66 Merge branch 'development' 2026-09-11 22:54:58 -04:00
Salastil f8beb3447a Merge branch 'development' 2026-09-11 21:44:13 -04:00
Salastil c9dcd620f5 Merge branch 'development' 2026-09-11 21:38:57 -04:00
Salastil e9f91744a5 Merge branch 'development' 2026-09-11 21:29:20 -04:00
Salastil 79de8b5262 Merge branch 'development' 2026-09-11 21:14:58 -04:00
Salastil 2b4f28eb2f Merge branch 'development' 2026-09-11 20:52:03 -04:00
Salastil d4d66cf7d3 Merge branch 'development' 2026-09-11 20:29:59 -04:00
Salastil 2c53afd6e2 Merge branch 'development'
The conflict is one I made: the wine fix was committed to master directly
and then cherry-picked to development, so the same change exists as two
different commits and git had to be told which to keep. Resolved to
development's, which is master's own version plus the fix on top.
2026-09-11 20:18:12 -04:00
SalastilandClaude Opus 5 1daa162177 Two things the first run found
Both build jobs failed, which is what a first run is for. Neither failure
was in the workflow's own logic - the artifacts, the release, the prune step
were never reached - and `publish` was skipped rather than shipping half a
release, which is the one property the whole arrangement exists to have.

**wine.** Packaging for Windows runs the executable through signtool, which
is a Windows program, and that call wants wine whether or not there is a
certificate to sign with - it skips the signing a moment later for want of
one. This desk has wine installed, so the local build never said so; the
runner said "wine is required" and stopped. Asked for by both package names,
since the split differs between Ubuntu releases, and then checked, so a
silent non-install fails at the apt step rather than half an hour later.

**A hardware test.** `a_missing_device_is_an_error_rather_than_a_substitution`
tests the routing step, which needs a default device to open before there is
anything to route - so on a runner with no sound card it failed one step
earlier, on a different error. Fixed in nobilis (3fa80c7) by marking it
#[ignore], like the hardware test directly below it, and the submodule
pointer moves with this commit.

I said in the plan that every test needing hardware or the network was
already ignored. That was true of 17 of them and not of the eighteenth.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-11 20:03:54 -04:00
Salastil caecd74265 Merge branch 'development'
rolling release / build-windows (push) Canceled after 0s
rolling release / publish (push) Canceled after 0s
rolling release / build-linux (push) Canceled after 1m22s
2026-09-11 19:47:59 -04:00
SalastilandClaude Opus 5 e65adb2692 Each branch keeps its own answer about where the daemon lives
The two branches disagree about one line on purpose - master names the
daemon at github, development at Gitea - and a merge that touches that file
on both sides would stop and ask which is right every time. The answer never
varies: whichever branch is being merged into.

Scoped to that one path. Anything else in a merge is a real question and
goes on being asked.

The driver itself is a line of local config, since a repository cannot set
one for you; a clone without it gets an ordinary conflict rather than a
silent wrong answer, which is the right way round for a thing that has to be
opted into.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-11 19:22:53 -04:00
SalastilandClaude Opus 5 51600269eb The public face fetches the daemon from the public host
master is what github sees, so the submodule it names has to be one a
stranger can fetch: a clone of this branch resolves nobilis from
github.com/Moho-Chat, not from a Gitea instance they have no account on and
may not be able to reach at all.

development keeps the Gitea URL, being where the work happens and where both
repositories already live side by side. The commit the submodule points at
is the same object in both places; only the address differs.

The cost of that, written down because it will be met again: every merge of
development into master arrives carrying the Gitea URL and has to keep
master's. `git submodule sync` after switching branches, too - the URL a
checkout uses is copied into .git/config, and changing branches does not
recopy it.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-11 19:16:49 -04:00
4 changed files with 27 additions and 37 deletions
+23
View File
@@ -0,0 +1,23 @@
# On a merge, .gitmodules keeps the answer this branch already has.
#
# master names the daemon at github.com because master is what a stranger
# clones, and development names it at the Gitea instance where the work
# happens. Without this, a merge that touched .gitmodules on both sides would
# stop and ask which host is right - and the answer is always "the one the
# branch being merged into already said".
#
# `merge=ours` needs a driver by that name, which is one line per clone and
# not something a repository can carry for you:
#
# git config merge.ours.driver true
#
# Without it git falls back to an ordinary merge, which conflicts rather than
# doing the wrong thing quietly - so a clone that has not run it is no worse
# off than before this file existed.
#
# The edge, because it is a real one: this keeps the *whole file*, not just the
# URL. If development ever adds a second submodule, master takes none of that
# entry while still taking the gitlink the merge brings with it - a submodule
# with nothing in .gitmodules to say where it comes from. Adding a submodule is
# therefore a thing to re-do by hand on master, and the only such thing.
/.gitmodules merge=ours
+1 -1
View File
@@ -1,3 +1,3 @@
[submodule "nobilis"]
path = nobilis
url = https://git.salastil.com/Salastil/nobilis.git
url = https://github.com/Moho-Chat/nobilis.git
+2 -35
View File
@@ -1,43 +1,20 @@
# Maintainer: Salastil <[email protected]>
#
# Builds moho from source the way an AUR VCS package does: compile the Rust
# daemon, build the renderer, then assemble an unpacked Electron tree and
# install it under /opt.
#
# Deliberately NOT the AppImage: an AppImage is a self-contained blob that
# needs libfuse2 at runtime and integrates with nothing. `npm run pack` still
# produces one for portable use; this is the path for installing it properly.
pkgname=moho-git
pkgver=r1.268751e
pkgrel=1
pkgdesc="Unified desktop chat client for IRC, Discord, Sneedchat and Matrix"
arch=('x86_64')
url="https://git.salastil.com/Salastil/moho"
url="https://github.com/Moho-Chat/moho"
license=('GPL3')
# Electron ships its own copy of Chromium, but still links against the
# system's GTK/NSS/audio stack at runtime.
depends=('gtk3' 'nss' 'alsa-lib' 'libxss' 'libnotify')
makedepends=('git' 'cargo' 'nodejs' 'npm')
provides=('moho')
conflicts=('moho')
# The daemon lives in its own repository and is pulled in as a submodule;
# makepkg does not recurse into submodules on its own, so prepare() does it.
source=("git+https://git.salastil.com/Salastil/moho.git")
source=("git+https://github.com/Moho-Chat/moho.git")
sha256sums=('SKIP')
# The bundled Electron binaries are already stripped and have their own debug
# handling; letting makepkg reprocess ~150MB of them wastes minutes and can
# corrupt the ASAR integrity checks.
options=(!strip !debug !lto)
pkgver() {
cd "$srcdir/moho"
# The release's own number first (#239), then where in the history this
# build sits: 1.0.0.r1234.abc1234. A number sorts above the bare r1234.abc
# this used to be, so an existing install upgrades rather than going back.
# A pre-release is written the way pacman orders one, without the hyphen
# it does not allow: 1.0.0-rc.1 is 1.0.0rc1, which sorts before 1.0.0 and
# after 1.0.0rc0 - so the release upgrades its own candidates.
printf "%s.r%s.%s" \
"$(sed -n 's/^ "version": "\(.*\)",$/\1/p' package.json | sed -E 's/-([a-z]+)\.?([0-9]+)$/\1\2/')" \
"$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
@@ -46,16 +23,11 @@ pkgver() {
prepare() {
cd "$srcdir/moho"
git submodule update --init --recursive
# `npm ci` respects the allowScripts entries in package.json, so the
# electron and esbuild postinstalls that fetch their platform binaries are
# permitted without any interactive approval.
npm ci
}
build() {
cd "$srcdir/moho"
# The daemon is bundled from the submodule's build output, so it has to
# exist before electron-builder assembles the tree.
cargo build --release --locked --manifest-path nobilis/Cargo.toml
npm run build
npx --no-install electron-builder --linux dir
@@ -73,16 +45,11 @@ package() {
install -dm755 "$pkgdir/opt/moho"
cp -a dist/linux-unpacked/. "$pkgdir/opt/moho/"
# Electron's setuid sandbox helper: without the setuid bit, Chromium either
# refuses to start or falls back to running unsandboxed.
chmod 4755 "$pkgdir/opt/moho/chrome-sandbox"
install -dm755 "$pkgdir/usr/bin"
ln -s /opt/moho/moho "$pkgdir/usr/bin/moho"
# Written here rather than shipped as a source file: this PKGBUILD builds
# from a plain git clone, so keeping it inline means there is nothing extra
# to keep in sync between the repo and the package.
install -dm755 "$pkgdir/usr/share/applications"
cat > "$pkgdir/usr/share/applications/moho.desktop" <<'DESKTOP'
[Desktop Entry]
+1 -1
Submodule nobilis updated: f3f872349a...d232be9c5e