Record the base theme in the .fcast header so recordings render the same everywhere #3
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Motivation
A
.fcastcarries no base theme. The header has onlyformat,version,felis_json,gridandmeta(docs/reference/format.md:32-48).ConfigureThemeis client→daemon traffic, which v1 does not record. A recording therefore holds only the OSC color overrides, not the colors they override.For a live replay through
servethis is fine, because the attaching client supplies its own theme. For the planned felis-reel (headless.fcast→ video), it means the same recording renders with whatever theme the machine converting it has configured. A recording shared with someone else does not look the way it looked to the person who recorded it.Proposal
recordwrites the attaching client's base theme into the header, either as a new field or undermeta(for examplemeta.theme { fg, bg, cursor, palette }). Readers already tolerate unknown fields (format.md:50), so this does not break existing readers. Renderers would use it as the default and still let a flag override it.To decide
meta. A normative field makes renderers depend on it.metakeeps it optional.recordgets the theme from. It is a client-core attach, so it would read the user's felis config the same way felis-client does. A--themeflag could override that.versionbump. Ametakey does not; a header field probably does.The owning explanation is
docs/explanation/format.md. The decision and the rejected option belong there.Status after the felis-cast v1 rework (PR #8):
felis-castv1) lets this land later without a version bump: an unknown header field is ignored by readers, andmetakeys are free-form. So this does not block stabilization.docs/explanation/format.md"Out of scope, on purpose" lists theme under player behaviour that belongs to the embedding player. Resolving this issue means picking one:--theme, felis-web-component'sthemeattribute) owns the base theme; the explanation already says so.meta.theme. Informational, renderers may use it as a default; the "out of scope" paragraph is narrowed to say the file may carry the recorder's theme as a hint.