Skip to content

Commit cf55f58

Browse files
committed
Merge remote-tracking branch 'origin/main' into codex/content-diff-main-integration
2 parents 532a0c8 + 6e8d8dd commit cf55f58

422 files changed

Lines changed: 63470 additions & 12890 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
name: Bug report
2+
description: Report a defect in Lore
3+
labels: [bug, needs-triage]
4+
body:
5+
- type: markdown
6+
attributes:
7+
value: |
8+
Please search [existing issues](https://github.com/EpicGames/lore/issues) first.
9+
If the error came from a Lore server you don't operate, report it to that
10+
server's operator; this tracker covers the Lore client and self-hosted server.
11+
- type: input
12+
id: version
13+
attributes:
14+
label: Lore version
15+
description: Paste the output of `lore --version`.
16+
placeholder: lore 0.8.6+3201
17+
validations:
18+
required: true
19+
- type: dropdown
20+
id: install
21+
attributes:
22+
label: Installation method
23+
description: >
24+
If you built from source, include your Rust toolchain (`rustc --version`)
25+
and any custom `RUSTFLAGS` in the reproduction steps -- a custom `RUSTFLAGS`
26+
overrides the flags in `.cargo/config.toml` and is a known source of build failures.
27+
options:
28+
- Prebuilt release binary
29+
- Built from source
30+
- MSI installer (Windows)
31+
validations:
32+
required: true
33+
- type: dropdown
34+
id: os
35+
attributes:
36+
label: Operating system / architecture
37+
description: Where did you hit the bug?
38+
options:
39+
- Linux -- x86_64
40+
- Linux -- aarch64
41+
- macOS -- aarch64
42+
- Windows -- x86_64
43+
- Other
44+
validations:
45+
required: true
46+
- type: textarea
47+
id: repro
48+
attributes:
49+
label: Steps to reproduce
50+
description: >
51+
Exact commands and repository state needed to trigger the bug. Helpful
52+
detail: does it reproduce on a clean repo and on the latest release? For
53+
sync/push/clone problems, note your network environment (VPN, proxy,
54+
firewall). On Linux aarch64, include your CPU model (`lscpu`) -- prebuilt
55+
aarch64 binaries target AWS Graviton.
56+
placeholder: |
57+
1. lore clone <url>
58+
2. lore stage .
59+
3. ...
60+
validations:
61+
required: true
62+
- type: textarea
63+
id: expected
64+
attributes:
65+
label: Expected vs actual behavior
66+
description: What did you expect to happen, and what happened instead?
67+
validations:
68+
required: false
69+
- type: dropdown
70+
id: component
71+
attributes:
72+
label: Component
73+
description: >
74+
Which side do you believe is at fault? If you pick Server or
75+
Both / unsure, please also fill in Server context below.
76+
options:
77+
- Client (CLI)
78+
- Server
79+
- Both / unsure
80+
validations:
81+
required: false
82+
- type: textarea
83+
id: server
84+
attributes:
85+
label: Server context
86+
description: >
87+
Server bugs only -- server version, how it's deployed (Docker, compose,
88+
bare metal), the storage backend (local disk, S3, other), and your
89+
`local.toml` server config. Redact certificate paths, credentials, and
90+
anything else sensitive before posting.
91+
validations:
92+
required: false
93+
- type: input
94+
id: regression
95+
attributes:
96+
label: Regression?
97+
description: Did this work in an earlier Lore version? If so, which one?
98+
placeholder: worked in 0.7.x
99+
validations:
100+
required: false
101+
- type: textarea
102+
id: logs
103+
attributes:
104+
label: Relevant logs or output
105+
description: >
106+
Rerun the failing command with `--debug`; set `RUST_BACKTRACE=1` for
107+
crashes. Log files live in the directory printed by `lore logfile info`.
108+
Logs can contain repository paths and commit messages -- redact anything
109+
sensitive before posting. This is rendered as code automatically.
110+
render: shell
111+
validations:
112+
required: false

.github/ISSUE_TEMPLATE/config.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
blank_issues_enabled: false
2+
contact_links:
3+
- name: Feature ideas & discussion
4+
url: https://discord.gg/E4SFJKRPbg
5+
about: "Discuss feature ideas with the team and community in the #feature-requests channel on Discord."
6+
- name: Help & questions
7+
url: https://discord.gg/E4SFJKRPbg
8+
about: "Ask usage questions and get help in the #support-requests channel on Discord."
9+
- name: Lore Enhancement Proposals (LEPs)
10+
url: https://github.com/EpicGames/lore/blob/main/docs/proposals/README.md
11+
about: Large or cross-cutting changes start as an enhancement proposal, not an issue.
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
name: Feature request
2+
description: Propose a concrete improvement to Lore
3+
labels: [enhancement, needs-triage]
4+
body:
5+
- type: markdown
6+
attributes:
7+
value: |
8+
Large or cross-cutting ideas (new subsystems, protocol or format changes,
9+
anything spanning multiple crates) should start as a
10+
[Lore Enhancement Proposal](https://github.com/EpicGames/lore/blob/main/docs/proposals/README.md)
11+
instead of an issue. For open-ended discussion, use `#feature-requests` on
12+
[Discord](https://discord.gg/E4SFJKRPbg).
13+
- type: textarea
14+
id: problem
15+
attributes:
16+
label: Problem
17+
description: What are you trying to do that Lore currently makes hard or impossible?
18+
validations:
19+
required: true
20+
- type: textarea
21+
id: solution
22+
attributes:
23+
label: Proposed solution
24+
description: How would you like this to work?
25+
validations:
26+
required: false
27+
- type: textarea
28+
id: alternatives
29+
attributes:
30+
label: Alternatives considered
31+
description: >
32+
Workarounds you use today, what you tried with existing features,
33+
or other approaches you ruled out.
34+
validations:
35+
required: false

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# Summary
2+
3+
<!-- What does this change, and why? -->
4+
5+
Closes #
6+
7+
## Checklist
8+
9+
- [ ] Linked to an issue above, or explained why none applies
10+
- [ ] Every commit carries a `Signed-off-by:` line (DCO -- see [CONTRIBUTING.md](https://github.com/EpicGames/lore/blob/main/CONTRIBUTING.md#dco-sign-off))
11+
- [ ] `cargo +nightly fmt --all` produces no changes
12+
- [ ] `cargo clippy --all-targets -- -D warnings --no-deps` passes
13+
- [ ] `cargo test` passes
14+
- [ ] `uv run pytest` passes (when Python tooling is touched)
15+
- [ ] Docs under `docs/` updated where behavior changed
16+
- [ ] If this change is large or cross-cutting, an [LEP](https://github.com/EpicGames/lore/blob/main/docs/proposals/README.md) has been filed first

.github/labeler.yml

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
# SPDX-FileCopyrightText: 2026 Epic Games, Inc.
2+
# SPDX-License-Identifier: MIT
3+
4+
# Path -> label map consumed by .github/workflows/labeler.yml.
5+
#
6+
# Area labels are coarse (client / server / core / ci) to match how work is
7+
# filtered; the globs stay per-crate so the map is explicit about what lands
8+
# where. A new top-level crate must be added to one bucket below.
9+
10+
'area:client':
11+
- changed-files:
12+
- any-glob-to-any-file:
13+
- 'lore-client/**'
14+
15+
'area:server':
16+
- changed-files:
17+
- any-glob-to-any-file:
18+
- 'lore-server/**'
19+
- 'lore-aws/**'
20+
- 'lore-credential/**'
21+
- 'lore-hashicorp/**'
22+
- 'lore-notification/**'
23+
- 'lore-telemetry/**'
24+
25+
'area:core':
26+
- changed-files:
27+
- any-glob-to-any-file:
28+
- 'lore/**'
29+
- 'lore-capi/**'
30+
- 'lore-revision/**'
31+
- 'lore-storage/**'
32+
- 'lore-transport/**'
33+
- 'lore-proto/**'
34+
- 'lore-base/**'
35+
- 'lore-io/**'
36+
- 'lore-macro/**'
37+
- 'lore-error-set/**'
38+
- 'lore-error-set-macro/**'
39+
- 'lore-chaos-client/**'
40+
- 'lore-integration-tests/**'
41+
42+
'area:ci':
43+
- changed-files:
44+
- any-glob-to-any-file:
45+
- '.github/**'
46+
47+
documentation:
48+
- changed-files:
49+
- any-glob-to-any-file:
50+
- 'docs/**'
51+
52+
LEP:
53+
- changed-files:
54+
- any-glob-to-any-file:
55+
- 'docs/proposals/**'

.github/workflows/labeler.yml

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# SPDX-FileCopyrightText: 2026 Epic Games, Inc.
2+
# SPDX-License-Identifier: MIT
3+
4+
name: Labeler
5+
6+
# pull_request_target is required so the job's token can label PRs from
7+
# forks. It is safe here: the labeler only reads the PR's changed-file list
8+
# via the API and there is no checkout, so fork code is never executed.
9+
on:
10+
pull_request_target:
11+
types: [opened, synchronize, reopened]
12+
13+
permissions: {}
14+
15+
concurrency:
16+
group: labeler-${{ github.event.pull_request.number }}
17+
cancel-in-progress: true
18+
19+
jobs:
20+
label:
21+
runs-on: ubuntu-latest
22+
permissions:
23+
contents: read # Read .github/labeler.yml and the PR's changed files
24+
pull-requests: write # Apply area/documentation labels to the PR
25+
steps:
26+
- uses: actions/labeler@bf12e9b00b37c5c0ca2b87b79b2daf7891dbda13 # v7.0.0
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# SPDX-FileCopyrightText: 2026 Epic Games, Inc.
2+
# SPDX-License-Identifier: MIT
3+
4+
name: Publish loreserver image
5+
6+
# Stub. Manual trigger only, so the workflow is registered on the default
7+
# branch and can be dispatched against a pull request branch. The multi-arch
8+
# build of lore-server/Dockerfile, the push to
9+
# ghcr.io/epicgames/lore/loreserver and keyless cosign signing land in a
10+
# follow-up pull request.
11+
on:
12+
workflow_dispatch:
13+
14+
permissions: {}
15+
16+
concurrency:
17+
group: publish-loreserver-image-${{ github.ref }}
18+
cancel-in-progress: false
19+
20+
jobs:
21+
publish:
22+
name: publish
23+
runs-on: ubuntu-latest
24+
steps:
25+
# TODO: build, push and sign the multi-arch image.
26+
- name: Publish
27+
run: echo "publish-loreserver-image stub — no build or publish yet"

.pre-commit-config.yaml

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,25 @@ repos:
1717
pass_filenames: false
1818
always_run: true
1919

20+
# `.internal()` on an error set silently collapses every handleable
21+
# variant into `Internal`, so `InternalForbiddenOnErrorSets` makes it an
22+
# E0034 ambiguity. rustc's own help text then suggests disambiguating
23+
# with `WrapInternal::internal(..)`, which compiles and reinstates the
24+
# bug. The guard trait is uncallable by construction; this catches the
25+
# one spelling the type system cannot.
26+
- id: no-wrapinternal-ufcs
27+
name: no UFCS bypass of the .internal() guard
28+
language: system
29+
# rg exits 0 when it finds a match, so invert it: a hit must fail.
30+
# Matches the call form only, so the rustdoc link in ext.rs — which is
31+
# `](WrapInternal::internal)`, no open paren after — is not a hit.
32+
entry: >-
33+
bash -c '! rg -n "\bWrapInternal::internal(_with)?\s*\("
34+
--glob "*.rs" --glob "!target/**" .
35+
|| { echo "Use .forward()/.forward_any(), or Target::internal_with_context() to collapse deliberately."; exit 1; }'
36+
pass_filenames: false
37+
always_run: true
38+
2039
- repo: https://github.com/EmbarkStudios/cargo-deny
2140
rev: 0.19.0
2241
hooks:
@@ -28,7 +47,11 @@ repos:
2847
rev: v4.6.0
2948
hooks:
3049
- id: end-of-file-fixer
50+
# We take the SWFS header as-is
51+
exclude: ^lore-revision/src/fs/swfs/api_interface/generated/swfs.h$
3152
- id: trailing-whitespace
53+
# We take the SWFS header as-is
54+
exclude: ^lore-revision/src/fs/swfs/api_interface/generated/swfs.h$
3255
- id: check-executables-have-shebangs
3356
# Ignore for now until executable flag handling is easier in Lore
3457
# - id: check-shebang-scripts-are-executable
@@ -46,7 +69,8 @@ repos:
4669
hooks:
4770
- id: remove-tabs
4871
# lore-core/native uses clangformat, which expects to use tabs so leave that path alone
49-
exclude: lore-core/native
72+
# We take the SWFS header as-is
73+
exclude: (lore-core/native|^lore-revision/src/fs/swfs/api_interface/generated/swfs.h$)
5074

5175
- repo: https://github.com/shellcheck-py/shellcheck-py
5276
rev: v0.10.0.1

CONTRIBUTING.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ Before you begin, read our [Code of Conduct](CODE_OF_CONDUCT.md).
99
We welcome code contributions — bug fixes, features, performance improvements. The [roadmap](docs/roadmap.md) shows the big-rock themes we're working toward — a good place to find where help is wanted. There are also plenty of ways to help beyond writing code:
1010

1111
- **Report a bug** — open a GitHub Issue with steps to reproduce
12-
- **Request a feature** — post in [#feature-requests on Discord](https://discord.gg/QYbNFVFv) or open a GitHub Issue
12+
- **Request a feature** — post in [#feature-requests on Discord](https://discord.gg/E4SFJKRPbg) or open a GitHub Issue
1313
- **Improve documentation** — fix typos, clarify explanations, add examples
1414
- **Triage issues** — help reproduce bugs, add labels, confirm scope
1515
- **Review pull requests** — read the code, test it, leave thoughtful feedback
@@ -172,7 +172,7 @@ lychee --config docs/developing/doc-standards/tools/lychee/lychee.toml docs/
172172

173173
## Community
174174

175-
Get help on [Discord](https://discord.gg/QYbNFVFv):
175+
Get help on [Discord](https://discord.gg/E4SFJKRPbg):
176176

177177
| Channel | Purpose |
178178
| --- | --- |
@@ -184,7 +184,7 @@ Get help on [Discord](https://discord.gg/QYbNFVFv):
184184
| `#show-and-tell` | Share what you've built with Lore |
185185
| `#off-topic` | Everything else |
186186

187-
For longer-form design discussions, open a GitHub Issue or bring the conversation to `#general` on [Discord](https://discord.gg/QYbNFVFv).
187+
For longer-form design discussions, open a GitHub Issue or bring the conversation to `#general` on [Discord](https://discord.gg/E4SFJKRPbg).
188188

189189
Issues tagged [`good-first-issue`](https://github.com/EpicGames/lore/labels/good-first-issue) are a good starting point if you're new to the codebase. If you're unsure where to begin, ask in `#support-requests`.
190190

0 commit comments

Comments
 (0)