Commit Graph
3074 Commits
Author SHA1 Message Date
LGUG2Z 04c79adefd ci(sweeps): the slow VM suites, the NixOS evaluation and the nixpkgs canary run outside the ladder; the flake lock is updated weekly 2026-11-05 15:51:50 -08:00
LGUG2Z e727f6b14d ci(macos): the macOS jobs run on the self-hosted Mac when the repository enables it 2026-11-05 15:51:50 -08:00
LGUG2Z 3a7d3d9e1f ci: the ladder of stages, with one required aggregator, and the reusable macOS jobs 2026-11-05 15:51:50 -08:00
LGUG2Z 21e86824e4 ci(paths): .github/ci-paths.yaml says which files concern which platform 2026-11-05 15:51:50 -08:00
LGUG2Z d49b155045 ci(actions): a composite action installs nix, enables KVM and reads the Cachix cache 2026-11-05 15:51:50 -08:00
LGUG2Z e23bfcfb36 build(nix): the macOS options and nix-darwin module validations are checks on every system
They take a plain pkgs and evaluate against any nixpkgs, so a Linux runner can build them. They stay in the macos-options set.
2026-11-05 15:51:50 -08:00
LGUG2Z f05d7fe737 build(just): test-partition-check, test-windows (the partitioned subset) and test-windows-full (the whole Windows suite by hand) 2026-11-05 15:51:50 -08:00
LGUG2Z 56afe5b286 build(nix): the tests of komorebi-macos-core run in linux-nextest and macos-nextest 2026-11-05 15:51:50 -08:00
LGUG2Z 98295e0065 build(nix): windows-nextest runs the windows and os_sensitive packages of the partition, windows-nextest-full all of them 2026-11-05 15:51:50 -08:00
LGUG2Z 8e1a2b261c refactor(macos): the animation maths, the arrival record and the enhanced-UI rules move into komorebi-macos-core, which needs no macOS 2026-11-05 15:51:50 -08:00
LGUG2Z b83cf06cc6 feat(tools): test-partition says which packages are tested where, and fails when the classification and the workspace disagree 2026-11-05 15:51:50 -08:00
LGUG2Z 3464fb0c58 test(transport): the listener tests run on Windows too, against the uds_windows listener the Windows daemon uses 2026-11-05 15:51:50 -08:00
LGUG2Z a81a1120cd docs: update paths for crates/ and the komorebi directory, add a contributor path map 2026-11-05 15:03:27 -08:00
LGUG2Z c234b1d884 build(tools): route the justfile and tools to crates/ 2026-11-05 15:03:27 -08:00
LGUG2Z 279ac0f759 style: format the files the path edits touched with rustfmt and nixfmt 2026-11-05 15:03:27 -08:00
LGUG2Z 259575a1b3 build: route the workspace to crates/
The workspace members, the path dependencies, the include_str! and test
fixture paths, the recorder's indexed source keys, and the Nix source
filter and path literals follow the new layout. Cargo.lock is unchanged.
2026-11-05 15:03:27 -08:00
LGUG2Z 6def6bdfbf refactor(layout): move library and dev-tool crates under crates/, rename komorebi-daemon to komorebi
Pure renames, no content changes. This revision does not build on its own;
the next one routes the workspace to the new paths.
2026-11-05 15:03:27 -08:00
LGUG2Z fdfb0cef73 chore(deps): dependencies.json lists this workspace's crates by name and version
cargo deny list names a workspace crate by its path+file:// source, which is a path on the machine that
ran it (C:/Users/... before, /Users/... now). depgen strips it, and the file is regenerated for all three
platforms' crates.
2026-11-05 15:03:27 -08:00
LGUG2Z 5b3e3f598a build(deny): ignore RUSTSEC-2025-0059, servo-fontconfig is unmaintained
It is reached only through font-loader, which komorebi-bar looks up system fonts with; it was
already in the lock before the recorder and schemars-nixgen merged.
2026-11-05 15:03:27 -08:00
LGUG2Z 112e624c5e build(nix): regenerate the Nix options from the schemas 2026-11-05 15:03:27 -08:00
LGUG2Z b16fedebe7 docs(nixgen): schemars-nixgen has a README, and the docs say how to run it 2026-11-05 15:03:27 -08:00
LGUG2Z a342dc39f5 ci(windows): the Windows tests leave out schemars-nixgen 2026-11-05 15:03:27 -08:00
LGUG2Z 58ecb37f38 build(just): nixgen-linux and nixgen-macos run schemars-nixgen from the tree 2026-11-05 15:03:27 -08:00
LGUG2Z c6d29a9268 build(nix): schemars-nixgen is built and checked by the flake, and in the dev shell
nix/nixgen has the package and the clippy and nextest checks (in the default check sets), from a
"nixgen" platform of nix/workspace-src.nix that is the tool alone; it is a stub in every other
platform's source, so an edit of it rebuilds none of theirs.
2026-11-05 15:03:27 -08:00
LGUG2Z 622646c3f7 build(workspace): schemars-nixgen is a member of the workspace, not a default member
It is a development tool: a bare cargo build leaves it out, publish is off, and no release
ships it. Its manifest uses the workspace dependencies it shares and keeps its own version.
2026-11-05 15:03:27 -08:00
LGUG2Z 3d33fac0cd merge: the history of schemars-nixgen 2026-11-05 15:03:27 -08:00
LGUG2Z e499ebb774 docs(recorder): the recorder is documented as part of the komorebi repository 2026-11-05 15:03:27 -08:00
LGUG2Z a0f7d871e5 ci(windows): the recorder is built with the rest, its tests informational until they have run on Windows 2026-11-05 15:03:27 -08:00
LGUG2Z e803212de2 build(just): the recorder is a target of every platform, with record, icon and build-windows-recorder 2026-11-05 15:03:27 -08:00
LGUG2Z 1db6d7d3fd build(nix): the recorder is built, checked and shipped by the flake
nix/recorder holds the native packages and checks of macOS and Linux (the recorder and the
sources it indexes are the "recorder" platform of nix/workspace-src.nix), the Windows
build has it as one of its members, and the dev shell gets ffmpeg, resvg and GStreamer. The
flake inputs komorebi-mac and komorebi-windows are gone: the sources are in the tree.
2026-11-05 15:03:27 -08:00
LGUG2Z 170a6f51c0 feat(catalog): index the komorebi source in this repository, not a checkout of each komorebi
The recorder is a member of the repository it indexes: each flavor is built from the
directory of its own daemon (komorebi-macos, komorebi-windows, komorebi-linux) and the shared
crates that log. The statements of the container, workspace and monitor moved into
komorebi-core, so the targets of the real log sample in the fixture are komorebi_core's.
KOMOREBI_SRC and KOMOREBI_COMMIT replace the three KOMOREBI_*_SRC variables, for a build
that is not in a checkout.
2026-11-05 15:03:27 -08:00
LGUG2Z 9854f90db7 build(wix): the komorebi installer ships komorebi-recorder, which has no installer of its own 2026-11-05 15:03:27 -08:00
LGUG2Z c64c71541b build(workspace): komorebi-recorder is a member of the workspace, at 0.1.0-dev 2026-11-05 15:03:27 -08:00
LGUG2Z 38a56fd544 merge: the history of komorebi-recorder 2026-11-05 15:03:27 -08:00
LGUG2Z c69fb806b3 build(just): the justfile does the right thing on Windows, macOS and Linux 2026-11-05 15:03:27 -08:00
LGUG2Z 598b57ff9b docs(dev): the plan records the nextest answers and that the sponsor texts are done
N1 is answered: macos-nextest runs in nix on a Mac (383 tests on the Mac Mini), the Windows
unit tests run in the Windows guest through nix run .#windows-nextest (964 tests, 964
passed, one run) with the check windows-nextest-build cross-compiling the 48 test
executables, and the neutral crates' tests run in linux-nextest (1532 tests). The remaining
open point is only whether the first CI also gets a hosted windows-latest cargo test job.
The R6 follow-up (the sponsor-only [FEAT] texts) and 2.2a are marked done.

Verified: documentation only; the numbers are from the agents' reports (win-nextest, and the
Mac Mini run of macos-nextest).
2026-11-05 15:03:27 -08:00
LGUG2Z 5d85e3f719 docs(dev): the plan records the owner's answers on macOS, docs, nightly and the old repositories
What: CUTOVER-PLAN.md records further owner decisions. R2: macOS is part of 0.2.0-dev; the owner tests it and releases 0.2.0 when ready; the macOS hand-check gates only the release, and the pre-release-later idea is dropped. R3: Starlight is the site for all docs, gh-pages is deprecated: new section 4.9 gives the retirement steps and what happens to mkdocs.yml (exclude_docs stays only while MkDocs builds anything) and the Windows docs source. R4: known failures do not block the dev-line landing. R5: published schema names agreed. R7: the owner handles the old macOS repository, so its banner/mirror/archive steps are removed (the KDE repository steps stay). R11 and every nixpkgs step are removed (no upstream package, the flake is the distribution). New section 4.8: the macOS nightly and its Homebrew formula must come from workflows of the joined repository, starting from docs/dev/old-ci/macos/workflows/*; not in the first CI; one nightly release for the whole repository. N1 (nextest) is marked in progress with the owner's two feasibility questions, not decided. Section 6 now lists what is truly open: the push (owner), the macOS hand-check, the self-hosted Windows runner, N1, and the release-time items.

How verified: sources read, nothing executed; the owner decisions are as relayed by the coordinator.
2026-11-05 15:03:27 -08:00
LGUG2Z 48b839e39f docs(macos): install from the joined repository, no private access
installation.md: the Nix flake section no longer asks for a GitHub access token
or a private repository; the input is github:LGUG2Z/komorebi and the overlay is
komorebi.overlays.macos (names checked in nix/macos/flake-module.nix; komorebi-full,
komorebi, komorebic and komorebi-bar are the package names it provides). The
nightly Homebrew text stays, now saying nightly builds come from LGUG2Z/komorebi;
the package name and tap are unchanged. Both OWNER markers are removed, the owner
having answered them. docs/macos/README.md had no remaining private-repo text.

Not verified by building; links by repository path only.
2026-11-05 15:03:27 -08:00
LGUG2Z caf27bfbd5 docs(readme): sponsors get what the README lists, nothing else
Resolves the OWNER marker in the sponsorship section. The owner confirmed that
sponsors get Discord roles, shout-outs, feature requests and, where stated, easter
egg releases, and nothing else; the private macOS repository for sponsors is
gone. Only the marker comment is removed, no wording changes.

Not verified beyond reading the diff.
2026-11-05 15:03:27 -08:00
LGUG2Z 3e21ebd3a4 feat(e2e): windows-nextest runs the Windows unit tests in the guest
The Windows crates' unit tests could only run in the (future) hosted Windows
CI. They run in the existing Windows e2e guest: nix run .#windows-nextest
boots the golden image like a scenario (restoring a saved state when
KOMOREBI_E2E_STATE is set), uploads the test executables that the check
windows-nextest-build cross-compiled, runs every test in a process of its own
(nextest.exe is not needed: komorebi's tests share global state, so one
process per test is what nextest does too) and prints a line per executable
and the failures, with OUT/cargo-tests.json for every result.

The driver e2e/platforms/qemu_windows/cargo_tests.py already existed and was
wired to nothing; it now takes the check output (tests.tsv) as well as cargo
messages, creates the saved state itself, prints the panic message of a
failure, and uploads the data files the tests read. Those are found by the
CARGO_MANIFEST_DIR baked into the executables, a path of the Nix build, so
the check also keeps schemas/ and the tests' fixtures and the driver puts them
at that path under C:. Without them 20 tests failed for the missing files.

docs/dev/build-and-test.md and docs/dev/flake-checks.md describe the check,
the app and the neutral crates in linux-nextest.

Verified: nix run .#windows-nextest on the golden image g8 (scale 1.5, state
~/e2e-w0/state-nextest): 964 tests in 37 executables, 964 passed, 0 failed,
202 s with the state restored (first run 163 s more to save the state).
One run only; not soaked. No e2e scenario, the golden image or the existing
e2e-windows behaviour changed.
2026-11-05 15:03:27 -08:00
LGUG2Z d872c9ec43 build(nix): windows-nextest-build compiles the Windows tests
The tests of the Windows crates cannot run on a Linux builder, and the old
windows-nextest (crane cargoNextest with doCheck = false) ran none. This
check does the part a builder can do: cross-compile every test executable of
the Windows workspace (cargo test --workspace --release --no-run, target
x86_64-pc-windows-msvc through the xwin toolchain) and keep them with a
tests.tsv that lists them (48 executables), so that they are proved to
compile and link, and so that the next revision can run them in the guest.
The stub members of the Windows source (Linux and macOS packages) are
excluded: objc2 does not build for Windows. The check is in the set
windows-test.

Verified: nix build .#checks.x86_64-linux.windows-nextest-build; the output
holds tests/*.exe and tests.tsv. Not run: the executables (see the next
revision).
2026-11-05 15:03:27 -08:00
LGUG2Z 18e92e59d1 build(nix): the neutral crates' tests run in linux-nextest
linux-nextest ran only the tests of the Linux packages (-p komorebi -p
komorebi-linux ...). The tests of komorebi-layouts, komorebi-scrolling,
komorebi-themes and the shared crates/* (backend, collections, config, core,
protocol, settings, transport, komorebic-core) ran in no nix check. They are
platform neutral, so the check now names them too (explicit -p list: with
--workspace the feature unification of komorebi-daemon breaks windows-future
on Linux), and runs with --no-fail-fast so one run lists every failure.

Two of those tests read files that the Linux source did not have: the
schemas of every platform (komorebi-config schemas test) and the macOS CLI
pages (komorebic-core docs_cli), so nix/workspace-src.nix keeps schemas/ and
docs/macos/cli/ in the Linux source.

Verified: nix build .#checks.x86_64-linux.linux-nextest, 1532 tests run, 1532
passed (9.1 s of test time).
2026-11-05 15:03:27 -08:00
LGUG2Z dfef93fc61 build(nix): macos-nextest runs the tests (doCheck = true)
The macos-nextest check was built with doCheck = false like the Windows one, so crane printed
'doCheck is not set, nextest tests will not run' and the check ran no test. It now uses
doCheck = true, as linux-nextest does, so the macOS unit tests run in the nix sandbox of a
darwin machine (the owner asked: can nextest run on a Mac with nix-darwin; if so, keep it).

Verified on the Mac Mini (aarch64-darwin, nix, no komorebi daemon started):
nix build .#checks.aarch64-darwin.macos-nextest exits 0 in about 1 minute with the cached
dependencies; nextest reports 'Summary 383 tests run: 383 passed, 1 skipped'. This is the
komorebi-macos library's tests; the cargo test run of the other packages (753 tests in all) was
done outside nix earlier. Not run: the other macOS checks again after this change (it only
touches this one check's arguments).
2026-11-05 15:03:27 -08:00
LGUG2Z 511c4b12b7 docs(dev): the plan records that the macOS origin token is not rotated
The owner decided not to rotate the token embedded in the origin URL of ~/komorebi-for-mac
(it is how they develop locally) and asked that it be in nothing that is pushed. The plan
now says that, replaces the 'rotate now' instruction and checklist item 5 accordingly, and
records what was checked: gitleaks with the default rules (which include the GitHub token
formats) found no leak in 7609 commits across every ref of the work clone nor in the files
of any workspace, and the work clone has no remote URL with credentials. The literal value
was not searched (tooling refused to copy a credential into a file); the plan gives the
owner a one-line command that reads the token at run time and prints only a count.

Verified: documentation only; the scans are the ones described above.
2026-11-05 15:03:27 -08:00
LGUG2Z a3ab0ef89f docs(github): issue templates ask for the platform
bug_report.yml and feature_request.yml get a required platform dropdown (Windows,
Linux (KDE Plasma), macOS) first in the form; the bug report's Windows-only
wording (ghost tiles, systeminfo, whkdrc, komorebic check) is scoped to Windows or
made platform-neutral; the feature request text names all three platforms.
config.yml links the Windows docs site plus the Linux and macOS index pages on
master (repo-relative GitHub links). Existing fields and labels are kept.

Verified: yq parses the three files. Links not fetched (the docs/linux and
docs/macos index files exist in the tree; they resolve on GitHub once pushed).
2026-11-05 15:03:27 -08:00
LGUG2Z 288801fe5b ci(feature): the auto-close message covers all platforms
feature-check.yaml: the comment says feature requests for Windows, Linux and macOS
are open to current $5/month sponsors, individual commercial use licence holders
and approved contributors, and links the README section. It no longer implies
anything about a private repository. The [FEAT]: prefix check and the close and
lock behaviour are unchanged.

Verified: yq parses the file, actionlint reports nothing.
2026-11-05 15:03:27 -08:00
LGUG2Z 9a87be9165 docs(macos): remove the private repository paragraph, state the one policy
docs/macos/README.md: delete the paragraphs naming LGUG2Z/komorebi-for-mac as the
public release repository and KomoCorp/komorebi-for-mac as a private repository
for certain sponsor tiers with nightly releases (the private repository is retired
and nothing replaces it); add the one policy paragraph to its sponsorship section.
docs/macos/index.md: the same policy paragraph.
docs/macos/installation.md: OWNER markers only, on the Nix flake section that adds
the private repository as an input and on the nightly Homebrew line; text left
as it was because the replacement is the owner's decision.

Not verified beyond reading the diff.
2026-11-05 15:03:27 -08:00
LGUG2Z ad516a3c91 docs(linux): the sponsorship section states the one cross-platform policy
docs/linux/index.md: the Sponsorship for Personal Use copy gains the same policy
paragraph as the README so the three platforms read one wording. Licence
sentences are untouched.

Not verified beyond reading the diff.
2026-11-05 15:03:27 -08:00
LGUG2Z 3926b437a9 docs(site): one sponsorship and feature-request policy on the docs index
docs/index.md: add the same policy paragraph as the README (all three platforms,
the $5/month sponsor tier, licence holders, approved contributors, automatic
closing of other [FEAT] issues). Licence sentences are untouched.

Not verified beyond reading the diff.
2026-11-05 15:03:27 -08:00
LGUG2Z 302e87f1b2 docs(readme): the sponsorship and feature-request policy covers all platforms
README.md: the Sponsorship for Personal Use section now states the one policy
(feature requests for Windows, Linux and macOS come from current GitHub sponsors
at $5/month and above, individual commercial use licence holders and approved
contributors; other [FEAT] issues are closed automatically; bug reports are open
to everyone). The Community paragraph asks reporters to choose the platform.
Statements about the licence are untouched. One OWNER marker asks what sponsors
get now that the private macOS repository is retired.

Not verified beyond reading the rendered diff.
2026-11-05 15:03:27 -08:00