# Streams

*Create and manage multiple daily note streams*

- > Replaces the Daily Note core plugin.
- > Inspired by the Periodic Notes and Calendar plugins.

![assets/logo-transparent](assets/logo-transparent-500.png)

## Support

If you find this plugin helpful, please consider supporting its development:

[![GitHub Sponsors](https://img.shields.io/badge/GitHub%20Sponsors-❤️-red?style=for-the-badge&logo=github)](https://github.com/sponsors/bfloydd)
[![Buy Me a Coffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-☕-yellow?style=for-the-badge&logo=buymeacoffee&logoColor=black)](https://buymeacoffee.com/floydpro)
[![Venmo](https://img.shields.io/badge/Donate%20via%20Venmo-3D95CE?style=for-the-badge&logo=venmo&logoColor=white)](https://venmo.com/floydpro?txn=pay)
[![PayPal](https://img.shields.io/badge/Donate%20via%20PayPal-00457C?style=for-the-badge&logo=paypal&logoColor=white)](https://paypal.me/bfloydd)

**Donation Options:**
- [GitHub Sponsors](https://github.com/sponsors/bfloydd) - Monthly sponsorship ❤️
- [Buy Me a Coffee](https://buymeacoffee.com/floydpro) - Support with a coffee ☕
- [Venmo](https://venmo.com/floydpro?txn=pay) - Quick mobile payment
- [PayPal](https://paypal.me/bfloydd) - Direct PayPal donation

Your support helps maintain and improve this plugin! 🙏

## Other Plugins

Check out my other Obsidian plugins:

- **[Coalesce](https://github.com/bfloydd/coalesce)**

*Follow me on [GitHub](https://github.com/bfloydd) for updates.*

## Features
- Multiple daily note streams.
- Full calendar for each stream.
- New view for missing notes.
- **Public API** for other plugins to access stream data.

## Benefits
- Divide up messy Daily Notes.
- Create a private stream for work.
- Encrypt a single stream for added data security.
- Quickly find and add notes.

## Getting started
- Add new stream in settings, "Daily Notes", pointing to where you store your daily notes.
- Then create another stream for Work of School.
- Use the navigation bar to select any stream.

## Streams Widget
![Streams Widget](assets/new-streams-with-calendar.png)

## Configure Streams
![Configure Streams](assets/new-streams-options.png)

## Move content between streams
![Move Content](assets/new-streams-move.png)

## Public API for Other Plugins

The Streams plugin provides a public API that other Obsidian plugins can use to access stream data and functionality.

### Quick Start
```typescript
// Get the Streams plugin instance
const streamsPlugin = this.app.plugins.getPlugin('streams') as StreamsPlugin;

if (streamsPlugin) {
    // Get all streams
    const streams = streamsPlugin.getStreams();
    
    // Get active stream
    const activeStream = streamsPlugin.getActiveStream();
    
    // Get stream for current file
    const activeFile = this.app.workspace.getActiveFile();
    if (activeFile) {
        const stream = streamsPlugin.getStreamForFile(activeFile.path);
    }
}
```

### Available Methods
- `getStreams()` - Get all configured streams
- `getStream(streamId)` - Get a specific stream by ID
- `getActiveStream()` - Get the currently active stream
- `getStreamsByFolder(folderPath)` - Get streams matching a folder path
- `getStreamForFile(filePath)` - Get the stream containing a file
- `getStreamInfo(streamId)` - Get basic stream information for a specific stream
- `hasStream(streamId)` - Check if a stream exists
- `getStreamCount()` - Get total number of streams
- `getVersion()` - Get plugin version info
- `getStreamsByIcon(icon)` - Get streams with a specific icon
- `getRibbonStreams()` - Get streams enabled for ribbon display
- `getCommandStreams()` - Get streams with commands enabled
- `hasStreams()` - Check if any streams are configured
- `updateStreamBarFromFile(filePath)` - Update the stream bar to match an opened file

For detailed API documentation, see [src/api/README.md](src/api/README.md).