mirror of
https://github.com/bherbruck/solidcraft.git
synced 2026-11-06 20:02:16 +00:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 43f6ee6a98 |
@@ -1,6 +1,6 @@
|
|||||||
# While a new geometry kernel is evaluated, new issues and discussions about kernel work, and new
|
# While a new geometry kernel is evaluated, new issues and discussions about kernel work, and new
|
||||||
# pull requests that change the kernel directories, are labelled `kernel-paused` for a maintainer to
|
# pull requests that change the kernel directories, are labelled `kernel-paused` for a maintainer to
|
||||||
# answer (CONTRIBUTING.md, "Kernel work is paused"). The logic is in scripts/kernel-paused/ (tested
|
# answer (CONTRIBUTING.md, "Kernel work goes to solidcore"). The logic is in scripts/kernel-paused/ (tested
|
||||||
# in ci.yml).
|
# in ci.yml).
|
||||||
name: Kernel paused
|
name: Kernel paused
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
SolidCraft is a clean-room, pure-Rust parametric 3D CAD app (sketch solver, feature timeline, B-rep kernel, an egui UI that agents drive). This file is a router: the hard rules, then the skill to read for your task. Humans: CONTRIBUTING.md.
|
SolidCraft is a clean-room, pure-Rust parametric 3D CAD app (sketch solver, feature timeline, B-rep kernel, an egui UI that agents drive). This file is a router: the hard rules, then the skill to read for your task. Humans: CONTRIBUTING.md.
|
||||||
|
|
||||||
## Start here
|
## Start here
|
||||||
Work: ROADMAP.md, "Where help is wanted most" in CONTRIBUTING.md, issues labelled `help wanted`, `good first issue`, `needs-triage`; architecture in `docs/architecture.md`. Act when the code, docs and rules settle a question; ask only when it changes what users see. Local `plan/` notes are optional.
|
Work: ROADMAP.md, "Where help is wanted most" in CONTRIBUTING.md, issues labelled `help wanted`, `good first issue`, `needs-triage`; architecture in `docs/architecture.md`. Act when the code, docs and rules settle a question; ask only when it changes what users see.
|
||||||
|
|
||||||
## Hard rules (what enforces each)
|
## Hard rules (what enforces each)
|
||||||
- Independent: never copy another product's code, icons, text or templates; never drive or take data from commercial CAD. `skills/solidcraft-ground-rules/SKILL.md`.
|
- Independent: never copy another product's code, icons, text or templates; never drive or take data from commercial CAD. `skills/solidcraft-ground-rules/SKILL.md`.
|
||||||
@@ -11,7 +11,7 @@ Work: ROADMAP.md, "Where help is wanted most" in CONTRIBUTING.md, issues labelle
|
|||||||
- Every asset is original or openly licensed with a row in ATTRIBUTION.md; read `assets/AGENTS.md` before icon work: `cargo xtask assets`, `cargo xtask icons`.
|
- Every asset is original or openly licensed with a row in ATTRIBUTION.md; read `assets/AGENTS.md` before icon work: `cargo xtask assets`, `cargo xtask icons`.
|
||||||
- Never crash: no unwrap/expect/panic/unsafe in non-test code (unsafe allowlist in crash-safety), errors are `Result`, input is hostile: clippy `-D warnings`, `hostile_params_never_panic`.
|
- Never crash: no unwrap/expect/panic/unsafe in non-test code (unsafe allowlist in crash-safety), errors are `Result`, input is hostile: clippy `-D warnings`, `hostile_params_never_panic`.
|
||||||
- Model decisions (what an operation does, which bodies it touches, which face or edge a point or name means, depths, nearness) use exact geometry; a mesh is for display, export, previews and mesh bodies (`xtask/mesh-decisions.txt` only shrinks): `cargo xtask mesh-decisions`.
|
- Model decisions (what an operation does, which bodies it touches, which face or edge a point or name means, depths, nearness) use exact geometry; a mesh is for display, export, previews and mesh bodies (`xtask/mesh-decisions.txt` only shrinks): `cargo xtask mesh-decisions`.
|
||||||
- New kernel cases go to solidcore: `cargo xtask lists`.
|
- Kernel ops and math go to solidcore; features call its API: `cargo xtask lists`.
|
||||||
- Everything is a command and programmatic calls never open dialogs: `skills/solidcraft-commands/SKILL.md`.
|
- Everything is a command and programmatic calls never open dialogs: `skills/solidcraft-commands/SKILL.md`.
|
||||||
- Layering (geom, sketch/kernel/render, doc, io, engine, ui-egui, apps); only `crates/kernel` uses truck: `cargo xtask layers`.
|
- Layering (geom, sketch/kernel/render, doc, io, engine, ui-egui, apps); only `crates/kernel` uses truck: `cargo xtask layers`.
|
||||||
- One outer UI container, one camera path (`navigation::handle`), colours from theme tokens: `cargo xtask ui-containers`.
|
- One outer UI container, one camera path (`navigation::handle`), colours from theme tokens: `cargo xtask ui-containers`.
|
||||||
@@ -31,7 +31,7 @@ Work: ROADMAP.md, "Where help is wanted most" in CONTRIBUTING.md, issues labelle
|
|||||||
## Working on X: read the skill first
|
## Working on X: read the skill first
|
||||||
| Working on | Read |
|
| Working on | Read |
|
||||||
|---|---|
|
|---|---|
|
||||||
| A PR, a claim, review, CI or evidence | `skills/solidcraft-contributing/SKILL.md` |
|
| A feature, PR, claim, review, CI, evidence | `skills/solidcraft-contributing/SKILL.md` |
|
||||||
| Licences, assets, clean-room, the name | `skills/solidcraft-ground-rules/SKILL.md` |
|
| Licences, assets, clean-room, the name | `skills/solidcraft-ground-rules/SKILL.md` |
|
||||||
| Non-test Rust, hostile input, a crash report | `skills/solidcraft-crash-safety/SKILL.md` |
|
| Non-test Rust, hostile input, a crash report | `skills/solidcraft-crash-safety/SKILL.md` |
|
||||||
| A command, a crate boundary | `skills/solidcraft-commands/SKILL.md` |
|
| A command, a crate boundary | `skills/solidcraft-commands/SKILL.md` |
|
||||||
|
|||||||
+26
-11
@@ -17,15 +17,27 @@ Before choosing a task, check the [command inventory](docs/features.md) and
|
|||||||
|
|
||||||
Questions, ideas or want to say what you're working on? Join the [Discord](https://discord.gg/FtU4NQNVDH).
|
Questions, ideas or want to say what you're working on? Join the [Discord](https://discord.gg/FtU4NQNVDH).
|
||||||
|
|
||||||
## Kernel work is paused
|
## Kernel work goes to solidcore
|
||||||
|
|
||||||
We're moving to a new geometry kernel. Until that's done, please don't open pull requests that
|
Since 0.40, SolidCraft's geometry kernel is [solidcore](https://github.com/tangency-labs/solidcore),
|
||||||
change `crates/kernel/`, `crates/geom/` or `vendor/truck*`, or issues and discussions about kernel
|
and the kernel operations still in this repository are migrating there. The split:
|
||||||
work: booleans, fillets, chamfers, shell, offsets, sweeps and lofts, threads and holes, STEP/IGES
|
|
||||||
import and export, or tessellation. The pinned issue on the tracker explains it. New ones get the
|
- **SolidCraft** is the application: commands, the timeline, sketches, the UI, file handling. A new
|
||||||
`kernel-paused` label (`.github/workflows/kernel-paused.yml`) and a maintainer answers them. Crashes
|
feature calls the solidcore API and builds on the operations it offers.
|
||||||
and data loss are still taken as issues. Pull requests outside those directories carry on as normal,
|
- **solidcore** holds the geometry: evaluators, intersections, booleans, blends, shells, sweeps,
|
||||||
including the dialogs and tools for these features.
|
tessellation and the rest of the math. If a feature needs kernel functionality solidcore does not
|
||||||
|
have yet, add it to solidcore first (its own issue and PR), then use it here.
|
||||||
|
|
||||||
|
So pull requests that add geometry math to SolidCraft (`crates/kernel/`, `crates/geom/`, or a new
|
||||||
|
evaluator or solver anywhere else) are not taken; they get the `kernel-paused` label
|
||||||
|
(`.github/workflows/kernel-paused.yml`) and a maintainer points them to solidcore. Crashes and data
|
||||||
|
loss are still taken as issues here, and the dialogs and tools for kernel features carry on as
|
||||||
|
normal.
|
||||||
|
|
||||||
|
Work started before 0.40 was written against the earlier kernel. It is still welcome: port it onto
|
||||||
|
today's code, calling solidcore for the geometry, before it can land. Expect a substantial rework
|
||||||
|
for anything that touched the kernel. Designs keep opening and rebuilding on the new kernel; where a
|
||||||
|
result changes, the PR says so and why.
|
||||||
|
|
||||||
## Get it running (about 10 minutes on a fast machine)
|
## Get it running (about 10 minutes on a fast machine)
|
||||||
|
|
||||||
@@ -329,8 +341,11 @@ and a fresh CI run:
|
|||||||
|
|
||||||
1. Work is tracked in [GitHub issues](https://github.com/tangency-labs/solidcraft/issues), labelled
|
1. Work is tracked in [GitHub issues](https://github.com/tangency-labs/solidcraft/issues), labelled
|
||||||
by area (`area:kernel`, `area:sketch`, `area:doc`, `area:ui`, `area:infra`). For anything
|
by area (`area:kernel`, `area:sketch`, `area:doc`, `area:ui`, `area:infra`). For anything
|
||||||
bigger than a bug fix that has no issue yet, open one first. **Claim the issue with a draft
|
bigger than a bug fix that has no issue yet, discuss it on [Discord](https://discord.gg/FtU4NQNVDH)
|
||||||
PR** before you start, so two people don't build the same thing:
|
first, then open an issue. Before you start, search **all** issues and pull requests, open and
|
||||||
|
closed, for similar work (`gh issue list -R tangency-labs/solidcraft --state all --search "<words>"`,
|
||||||
|
and the same with `gh pr list`). **Claim the issue with a draft PR** before you start, so two
|
||||||
|
people don't build the same thing:
|
||||||
- Check nobody has it: `gh pr list -R tangency-labs/solidcraft --state open --search "#N"`.
|
- Check nobody has it: `gh pr list -R tangency-labs/solidcraft --state open --search "#N"`.
|
||||||
- Branch from the latest `main`, commit `git commit --allow-empty -m "claim: #N"`, push, and
|
- Branch from the latest `main`, commit `git commit --allow-empty -m "claim: #N"`, push, and
|
||||||
open a **draft** PR titled `<summary> (#N)`, e.g. `Fillet: variable radius along a chain (#123)`.
|
open a **draft** PR titled `<summary> (#N)`, e.g. `Fillet: variable radius along a chain (#123)`.
|
||||||
@@ -443,7 +458,7 @@ correct them freely and it won't put them back.
|
|||||||
|
|
||||||
## Where help is wanted most
|
## Where help is wanted most
|
||||||
|
|
||||||
**Kernel speed (slow fillets, booleans, STEP):** please don't rewrite the current kernel code for speed; it is being replaced by [solidcore](https://github.com/bherbruck/solidcore) ([progress](https://tangency-labs.github.io/solidcore/)). Report slow cases with a file under the `kernel-perf` label, and put kernel effort into solidcore instead. See [#1597](https://github.com/tangency-labs/solidcraft/issues/1597).
|
**Kernel speed (slow fillets, booleans, STEP):** please don't rewrite the current kernel code for speed; the kernel is [solidcore](https://github.com/tangency-labs/solidcore) ([progress](https://tangency-labs.github.io/solidcore/)). Report slow cases with a file under the `kernel-perf` label, and put kernel effort into solidcore instead. See [#1597](https://github.com/tangency-labs/solidcraft/issues/1597).
|
||||||
|
|
||||||
See the [`help wanted`](https://github.com/tangency-labs/solidcraft/labels/help%20wanted) and
|
See the [`help wanted`](https://github.com/tangency-labs/solidcraft/labels/help%20wanted) and
|
||||||
[`good first issue`](https://github.com/tangency-labs/solidcraft/labels/good%20first%20issue) labels.
|
[`good first issue`](https://github.com/tangency-labs/solidcraft/labels/good%20first%20issue) labels.
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ not modelling a part through MCP.
|
|||||||
feature under another number, and PRs that change the files you will change
|
feature under another number, and PRs that change the files you will change
|
||||||
(`gh pr list ... --json number,title,files`). If someone has it, comment on their PR or issue
|
(`gh pr list ... --json number,title,files`). If someone has it, comment on their PR or issue
|
||||||
instead of opening a second one: two PRs for one change cannot both land.
|
instead of opening a second one: two PRs for one change cannot both land.
|
||||||
|
- **Search before you start.** Scan ALL issues and PRs, open and closed, for similar work (`gh issue list` and `gh pr list --state all --search`). New features are discussed on Discord, then get an issue. Kernel functionality goes to solidcore, not here (CONTRIBUTING.md, "Kernel work goes to solidcore"); work begun before 0.40 is ported onto today's code first.
|
||||||
- **Claim with a draft PR.** `gh pr list -R tangency-labs/solidcraft --state open --search "#N"`; if none,
|
- **Claim with a draft PR.** `gh pr list -R tangency-labs/solidcraft --state open --search "#N"`; if none,
|
||||||
branch from the latest `origin/main`, `git commit --allow-empty -m "claim: #N"`, push, and open a
|
branch from the latest `origin/main`, `git commit --allow-empty -m "claim: #N"`, push, and open a
|
||||||
draft PR titled `<summary> (#N)`. The lowest-numbered open PR for an issue wins; close yours if it
|
draft PR titled `<summary> (#N)`. The lowest-numbered open PR for an issue wins; close yours if it
|
||||||
|
|||||||
Reference in New Issue
Block a user