Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
ccce64f
Move to Swift 6.4 tools-version and gate Apple-only MediaTools surfac…
leogdion Jul 29, 2026
c98aff0
Adopt BrightDigit CI template from SyndiKit, pinned to Swift 6.4 (#4)
leogdion Jul 29, 2026
8cac082
Import FoundationXML on Linux and make Codecov uploads non-fatal (#4)
leogdion Jul 29, 2026
d7c287c
Gate AVFoundation-dependent tests for non-Apple platforms (#4)
leogdion Jul 29, 2026
8f0e242
Fix DTD test on hosts without xmllint and bump snapshot SDK pins (#4)
leogdion Jul 29, 2026
fe8c823
Correct the wasm SDK checksum (#4)
leogdion Jul 29, 2026
43a1270
Gate DTD validation out on WebAssembly (#4)
leogdion Jul 29, 2026
3a2e4e9
Revert wasm SDK to 2026-06-15 and gate atomic writes for WASI (#4)
leogdion Jul 29, 2026
2cdf2a7
Replace CORRECTIONS.md with versioned .claude/agent-notes.md
leogdion Jul 29, 2026
0c48fb5
Document why ENABLE_WASM is false (#4)
leogdion Jul 29, 2026
26ccbcd
Record why digest-pinning would not have fixed wasm (#4)
leogdion Jul 29, 2026
ea16605
Fix lint script toolchain and periphery config
leogdion Jul 29, 2026
9be6ba0
Split FCPKit model files into one type per file
leogdion Jul 29, 2026
13ada3e
Split FCPXMLDiff files into one type per file
leogdion Jul 29, 2026
b75a0ee
Hoist CodingKeys above properties for type_contents_order
leogdion Jul 29, 2026
ee88f2a
Split remaining multi-declaration files
leogdion Jul 29, 2026
d0bcb63
Add explicit internal ACL to implicit declarations
leogdion Jul 29, 2026
2b06ea7
Move closing brackets of multiline arguments to their own line
leogdion Jul 29, 2026
bdbe72e
Put conditional returns on their own line
leogdion Jul 29, 2026
b4cc0e6
Document public API surface
leogdion Jul 29, 2026
30702ad
Fix assorted small lint rules
leogdion Jul 29, 2026
6911f7c
Shorten over-long lines in renderers and CLI output
leogdion Jul 29, 2026
9724981
Move node-encoding conformances next to their types
leogdion Jul 29, 2026
2456e3a
Order type contents and file types per SwiftLint
leogdion Jul 29, 2026
e4b7c2a
Decompose MulticamXMLBuilder's document builder
leogdion Jul 29, 2026
af68a88
Stop linting Swift layout rules inside XML fixture literals
leogdion Jul 29, 2026
1073afc
Extract shared option parsing in fcpxml-diff
leogdion Jul 29, 2026
9bb9866
Extract multiset comparison from appendValueDifferences
leogdion Jul 29, 2026
97fb0c3
Split MulticamXMLBuilder across extension files
leogdion Jul 29, 2026
b5e6f32
Split FCPXMLDiffTests across extension files
leogdion Jul 29, 2026
f79bdec
Extract fixtures from over-long test functions
leogdion Jul 29, 2026
bcd6c70
Split remaining over-long test files
leogdion Jul 29, 2026
befdd60
Move XML fixtures to files; disable layout rules on CLI help text
leogdion Jul 29, 2026
7b27d94
Import FoundationXML for XMLParser on Linux
Jul 29, 2026
53c00a7
Apply swiftlint autofix
Jul 29, 2026
300b1c5
Rename supportedGenerationVersion to supportedGeneration
Jul 29, 2026
c5aab1e
Document public API of FCPKit model types
Jul 30, 2026
8880be3
Split over-long files and refactor for SwiftLint strict compliance
Jul 30, 2026
fd724dd
Remove unused FCPKit imports flagged by periphery
Jul 30, 2026
a0b58ec
Remove stray blank lines after import removal
Jul 30, 2026
0b8fd67
Add FCPNodeEncodable to collapse repetitive DynamicNodeEncoding boile…
leogdion Jul 30, 2026
1ad30d1
Drop Periphery from local lint tooling for now.
leogdion Jul 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 0 additions & 8 deletions .claude/CORRECTIONS.md

This file was deleted.

33 changes: 33 additions & 0 deletions .claude/agent-notes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Agent Notes

Running log of user corrections and standing always/never directives for this repo.
**This file is the source of truth for how to work here.**

## How to use this file

- **Read this file at the start of every session, before doing any work.**
- **Append one line per directive proactively** — without being asked — whenever the user
corrects you or gives an "always"/"never" instruction. Record the literal meaning, not an
interpretation.
- **Newest lines at the bottom.** One line per entry, prefixed with the date (YYYY-MM-DD).
- **When a directive supersedes an earlier one, update or remove the stale line** rather than
leaving both. The log should always read as the current set of rules, not a history of every
instruction ever given.

> Note: this supersedes the older strictly-append-only rule from `.claude/CORRECTIONS.md`
> (merged into this file 2026-07-29). Entries are still appended as they arise, but stale lines
> are now corrected in place instead of accumulating contradictions.

## Directives

- 2026-07-17: Append one concise line here whenever the user corrects me or gives an explicit "always"/"never" directive.
- 2026-07-17: Keep this log in the repo in an agent-visible folder (`.claude/`), not machine-only, so it is committed and shared.
- 2026-07-17: Save memories AND corrections in the repo (`.claude/memory/` and this file), never only in the local user memory directory.
- 2026-07-29: Write new tests in Swift Testing following https://gist.github.com/leogdion/0806c2f41aeb2c77db6a4a846cf13c0f — existing XCTest tests stay as they are; this overrides the older "write new tests in XCTest for now" guidance.
- 2026-07-29: Gate Apple-only frameworks with `#if canImport(...)` (e.g. `CoreMedia`, `AVFoundation`) rather than excluding targets or platforms from CI.
- 2026-07-29: Never claim cross-platform support from reasoning or a macOS-only build — verify in the actual target environment (Docker container matching CI) before asserting it works.
- 2026-07-29: When copying BrightDigit package scaffolding, use the most recently maintained sibling repo as the template (currently SyndiKit).
- 2026-07-29: Prefer opening a PR over merging; leave work in a reviewable state that a new conversation can pick up.
- 2026-07-29: When verifying Linux/wasm builds in Docker, pass `--platform linux/amd64` to match CI — a Docker tag can ship different Swift builds per architecture, so an arm64 pass proves nothing about CI.
- 2026-07-29: Foundation and FoundationXML are available on all OSes.
- 2026-07-29: Do not rely on external host tools like ffprobe for MediaTools; prefer something that can be built into the library.
2 changes: 1 addition & 1 deletion .claude/memory/MEMORY.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
- [Corrections log directive](corrections-log-directive.md) — always append corrections/always-never directives to `.claude/CORRECTIONS.md` in the repo (append-only)
- [Corrections log directive](corrections-log-directive.md) — log corrections/always-never directives in `.claude/agent-notes.md`; read that file first every session
- [v0.1.0 plan & DSL](v0.1.0-plan-and-dsl.md) — ADR 0002 accepted; FCPKitDSL surface locked; resume on Step 0 via `v0.1.x` after docs merged
10 changes: 6 additions & 4 deletions .claude/memory/corrections-log-directive.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
---
name: corrections-log-directive
description: Standing rule to append every user correction / always-never directive to CORRECTIONS.md
description: Standing rule to log every user correction / always-never directive in .claude/agent-notes.md
metadata:
node_type: memory
type: feedback
originSessionId: 1dec778e-d507-47f9-a9de-21c7aea1aff1
---

Whenever the user corrects me, or gives an explicit "always"/"never" directive, immediately append exactly one concise line to `.claude/CORRECTIONS.md` **in the repo** (not the machine-local memory dir). Record the instruction's literal meaning, not an interpretation.
Whenever the user corrects me, or gives an explicit "always"/"never" directive, immediately add exactly one concise line to `.claude/agent-notes.md` **in the repo** (not the machine-local memory dir). Do this proactively, without being asked. Record the instruction's literal meaning, not an interpretation.

**Why:** The user maintains an append-only corrections file, committed to the repo, as the single source of truth for how I should work on this project — so it is shared and easy for any agent to find.
**Why:** The user maintains this file, committed to the repo, as the single source of truth for how I should work on this project — so it is shared and easy for any agent to find.

**How to apply:** The file lives at `.claude/CORRECTIONS.md` in the repo root. It is append-only — preserve all existing entries; never rewrite, reorder, or delete prior notes. Prefix each entry with the date (YYYY-MM-DD).
**How to apply:** The file lives at `.claude/agent-notes.md`. **Read it at the start of every session, before doing any work.** Newest lines at the bottom, one line per entry, prefixed with the date (YYYY-MM-DD). When a directive supersedes an earlier one, update or remove the stale line rather than leaving both — the log should read as the current rule set, not a full history.

Superseded 2026-07-29: this log was previously `.claude/CORRECTIONS.md` and was strictly append-only ("never rewrite, reorder, or delete"). That file has been merged into `.claude/agent-notes.md` and the append-only rule replaced by the update-stale-lines rule above.
26 changes: 26 additions & 0 deletions .github/actions/setup-tools/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: Setup mise tools
description: >-
Restore (or build and save) the mise tool cache and put the binaries on PATH.

runs:
using: composite
steps:
- name: Cache mise tools
id: mise-cache
uses: actions/cache@v4
with:
path: ~/.local/share/mise/installs
key: mise-v2-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('.mise.toml') }}
restore-keys: |
mise-v2-${{ runner.os }}-${{ runner.arch }}-
- name: Install mise tools (cache miss)
if: steps.mise-cache.outputs.cache-hit != 'true'
uses: jdx/mise-action@v4
with:
cache: false
- name: Configure PATH for cached mise tools
if: steps.mise-cache.outputs.cache-hit == 'true'
uses: jdx/mise-action@v4
with:
install: false
cache: false
11 changes: 11 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates

version: 2
updates:
- package-ecosystem: "swift" # See documentation for possible values
directory: "/" # Location of package manifests
schedule:
interval: "weekly"
35 changes: 35 additions & 0 deletions .github/matrices/macos-full.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
[
{
"runs-on": "xcode-27",
"xcode": "/Applications/Xcode_27.0.app"
},
{
"type": "macos",
"runs-on": "xcode-27",
"xcode": "/Applications/Xcode_27.0.app"
},
{
"type": "ios",
"runs-on": "xcode-27",
"xcode": "/Applications/Xcode_27.0.app",
"deviceName": "iPhone 17",
"osVersion": "26.5",
"download-platform": true
},
{
"type": "watchos",
"runs-on": "xcode-27",
"xcode": "/Applications/Xcode_27.0.app",
"deviceName": "Apple Watch Ultra 3 (49mm)",
"osVersion": "26.5",
"download-platform": true
},
{
"type": "tvos",
"runs-on": "xcode-27",
"xcode": "/Applications/Xcode_27.0.app",
"deviceName": "Apple TV 4K (3rd generation)",
"osVersion": "26.5",
"download-platform": true
}
]
6 changes: 6 additions & 0 deletions .github/matrices/macos-spm.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
[
{
"runs-on": "xcode-27",
"xcode": "/Applications/Xcode_27.0.app"
}
]
Loading
Loading