# Nushell core team meeting 2024-07-31
## Attendees
- Jack
- Devyn
- Stefan
- Darren
- Michael
- Antoine
- Rose
- Jakub
- Andy
- Ian
## Agenda
- [x] ctrlc -> plugin, when to reset plugin side Signals? https://github.com/nushell/nushell/issues/13501
- [x] stretch, pie in the sky, assigning pipelines to variables, without collecting?
- [x] Add nu_plugin_plist functionality to nu_plugin_formats?
- [x] Adding content type metadata for other types.. should we pull in a lib to use with open or manually assign.
- [x] If an underlying Pipeline reader is capable of Seek, should we expose a method to grab to expose Seek.. this would be perf optimization when using `polars open` as part of a pipeline.. The readers require Seek.
- [x] ANSI contamination in the pipeline, harmful strip -> PipelineMetadata
- [ ] `main` stuff
## Discussed Topics
## `ctrl-c` with plugins
- currently doesn't reset after Ctrl-C, quits on the next call
- for internal stuff the repl will reset after one whole loop
- Andy: should also broadcast to the plugins?
- Devyn: for symmetry with internal commands (if multiple commands are spawned e.g. `par-each` to ensure safe shutdown)
- Andy: sounds the easiest to do the same, plan a PR (Thanks!)
- some responsibility on the plugin author (if you want to respond to it)
## Stream values
- lazy
- scoping challenge, can only be consumed once and can't outlive its closure etc.
- with the IR VM it would behave like binding a register
- style of utilities like the rust iterator adapters imaginable
- e.g. take one entry, then pass the stream to further processing
## Detour: timeline IR switch
Devyn: at some point invert the default
## Jack's `plist` plugin
- relies on a plist crate
- generally vibe merge into nu_plugin_formats
- simpler release
## content-type metadata
- when opening a file with `open` should we set the mime-type based on the extension into the `PipelineMetadata`
- database source, are we accepting the breaking data changes in a crate vs manually setting in the `from ...` converter commands
- when performing transformations with `to` need to update
- useful when piping to `http` family commands (motivated by jack's endeavour into a S3 plugin)
## `polars open` challenge
- composability of cloud/storage provider plugins with polars would be nice
- expects `Seek` (includes `.rewind` etc.) not quite compatible with a stream
- dumping into a temp file may be wasteful for some usecases
- can we dispatch on kind of input
- ? sidestep stream and instead use the datasource?
- our current datasource in `PipelineMetadata` doesn't get updated should you do transformations in between
- would need a separate trusted channel/metadata field
## ANSI escapes
- we shouldn't be stripping ANSI escapes implicitly ever
- change `find` for now so that whatever is needed for the highlighting is in the `PipelineMetadata`
- try to follow this pattern for internal commands
- discussion about what to do about extensibility:
- ways to make it possible to define custom behavior on `PipelineMetadata` for styling?
- how can plugins add to this?
- is this losing pipeline composability? there are filters that would potentially know how they have to modify `PipelineMetadata` to preserve the right styling, and they'd probably just end up throwing it out not knowing what to do
- possible alternatives
1. styled strings (like emacs) within the `Value` variants?
- would be kind of nice because all commands could use it
- support multiple spans within the string with different styles
- not too heavy, easy to remove the styles and concat all of the strings
- do we need syntax for this or no? possible to just construct it with commands
- prior art (linked by @rose): https://www.gnu.org/software/emacs/manual/html_node/elisp/Text-Props-and-Strings.html
2. `Value::WithMetadata` type wrapper that wraps a `Box<Value>` with some kind of metadata, when needed?
- it could get complicated to know how to handle this correctly at different places
- a bit inefficient perhaps, though it does preserve best case performance when this isn't needed
- probably not something we can hope to represent in NUON