Files
m3e-canvas/web/vendor/PROVENANCE.md
T
pastilhasandClaude Fable 5 240d63940d vendor m3e-canvas 5c83ac6, with the import rewrite scripted
upstream imports through a @/ alias, and this platform already binds
@/* to src/apps/officer-web and @/components/* to its own shared
components — so an unrewritten import resolves to the WRONG module
rather than failing. the rewrite is mechanical and lives in
scripts/vendor.sh so a re-vendor produces a readable diff.

lib/ai.ts and AiPanel are vendored despite being unwanted: deleting them
meant editing vendored code, and Canvas.tsx references them throughout.
a faithful copy carrying an unused module beats a doctored one.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-05 12:00:17 +01:00

35 lines
1.6 KiB
Markdown

# Vendored from lnkiai/m3e-canvas
| | |
| --- | --- |
| upstream | https://github.com/lnkiai/m3e-canvas.git |
| ref | `main` |
| commit | `5c83ac6f437153b4df4d2348c4f94c4ff71b864a` |
| dated | 2026-09-05 |
| licence | MIT — see `LICENSE` beside this file |
| vendored | 2026-09-05 by `scripts/vendor.sh` |
**Do not edit anything in this directory.** Officer's changes live outside it, reached through
`web/adapter.ts`. Editing here makes the next `vendor.sh` run either clobber the change or
produce a diff nobody can read.
## What was taken, and what was not
Taken: `lib/`, `components/`, upstream's `app/page.tsx` as `Canvas.tsx`, and `globals.css`.
Not taken: `app/layout.tsx` — a Next.js route shell with no meaning here.
`lib/ai.ts` and `components/AiPanel.tsx` ARE taken even though Officer does not use them. They
keep model-provider API keys in `localStorage`, which is not how anything here should work — but
`Canvas.tsx` references them throughout, so removing them would mean editing vendored code. A
faithful copy carrying an unused module beats a doctored one that cannot be re-vendored. They are
inert without a key, and the shell does not surface them.
## The one edit `vendor.sh` makes
Every `@/lib/…` and `@/components/…` import is rewritten to a relative path. This platform already
binds `@/*` to `src/apps/officer-web` and `@/components/*` to its own shared components, so an
unrewritten import resolves to the WRONG module rather than failing — silent breakage.
The rewrite is deterministic, so a re-vendor produces a readable diff of upstream's real changes.