Vendor iris, the in-house UI library, at iris/

Iris's decision: it lives in this repository for now, included by path,
with its history left in the iris/iris repository on the gitea remote
(this is its main at 7b54aaf, byte-identical to the public GitHub copy).
It gets its own repository back once it has proved itself here.

RUST.md's I0 records the decision and what the first build said: the
tree does not compile on the current nightly because const_trait_impl
now requires traits to be declared 'const trait', which is the first
item of I0b.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
irisandClaude Fable 5.1 committed 2026-09-04 17:17:16 -04:00
1 parent 0f8ba49f4a
commit 4ab26f068e
93 files changed
+12665 -12

No files matched your search

+33 -12
View File
@@ -447,19 +447,40 @@ accepted.
### The iris track
These build iris up to carry the app. Each is a feature added to iris
with a pass condition, in dependency order. Work in iris's own repository,
pinned here by commit, and record in this file what each step measured.
with a pass condition, in dependency order. Work in `iris/` in this
repository on the `rustify` branch, and record in this file what each
step measured.
- [ ] **I0 — bring iris in-house.** Decide where it lives — the
recommendation is a repository of its own on the gitea remote,
consumed here the way `wg-app-link` is (a submodule pinned to a
commit), so the app and the library version-lock and the library
stays usable by the desktop app on its own. Pin a dated nightly in
`rust-toolchain.toml`; list every `#![feature]` gate with what it is
for, so each can be retired when it stabilises. Get `cargo build`,
`clippy` and `fmt` clean at the defaults and the `tabs` example
running in a window. Pass: a fresh clone builds unattended from the
pinned toolchain.
- [x] **I0awhere iris lives (decided 2026-09-04).** For now it is
**vendored at `iris/` in this repository**, history not carried,
and consumed by path. Iris's decision: keep it close while it is
being reshaped for this app, and give it back its own repository —
`iris/iris` on the gitea remote, which already holds the full
244-commit history, on a branch of its own — once it has proved
itself. The vendored tree is that repository's `main` at
`7b54aaf` ("readme", 2026-01-29), byte-identical to the public
GitHub copy, so a later reconciliation has a known base. A crate
that uses it says `iris = { path = "../iris" }`.
- [ ] **I0b — make it build here.** Pin a dated nightly in
`iris/rust-toolchain.toml` (the machine has
`nightly-x86_64-unknown-linux-gnu`, rustc 1.100.0-nightly
2026-08-25); list every `#![feature]` gate with what it is for, so
each can be retired when it stabilises. Get `cargo build`, `clippy`
and `fmt` clean at the defaults and the `tabs` example running in a
window (this VM has no display: a headless compositor is what
`emu` uses for the emulator, and the same trick serves here).
Pass: a fresh clone builds unattended from the pinned toolchain.
**Measured 2026-09-04**: `cargo +nightly check` on that nightly
fails in `iris-core` with 36 errors, all one cause — the
`const_trait_impl` feature changed shape between January and
August: `impl const Trait for T` is now rejected with "expected a
trait, found type" unless the trait itself is declared
`const trait`, at seven sites (`num.rs`, `align.rs`, `axis.rs`,
`pos.rs`, `color.rs`, `math.rs`, `vec2.rs`), and the unresolved
`UiVec2`/`Vec2`/`impl_op` imports cascade from those. That is the
nightly-drift risk in one build; the fix is mechanical (declare
the traits `const trait`), and it is the first item of I0b rather
than pinning back to a January nightly, which would only defer it.
- [ ] **I1 — the text stack decision.** iris uses cosmic-text; the
transcript needs rich inline spans (links, code chips, colour),
selection across many widgets with the platform's handles on the