mirror of
https://github.com/abue-ammar/tinycast.git
synced 2026-10-02 00:04:44 +08:00
* feat(ai): add an AI Chat window with a conversations sidebar A Raycast-style AI Chat window: saved conversations on the left, the open one on the right, and a composer that picks the model, reasoning effort and tools per chat. The palette's chat becomes Quick AI; ⌘J moves a Quick AI conversation into the window. - Each chat keeps its model, effort and tool scope; reopening it restores them - Reasoning shows as collapsible thinking blocks, one per stretch of thinking - Image paste and attachments for vision-capable models (Claude, Codex) - Model lists come from each CLI's own catalog, so new Claude models appear - Context gauge with a hover card: history, budget, files, tools, tokens - Choices render as buttons above the composer; a bare "choices" list counts - Sources list with citation numbers at the end of the citing sentence - Find in Chat (⌘F) steps word by word and marks each match in place - A reply's text is one selectable NSTextView, so a drag spans paragraphs, lists, code and tables - Chats are titled by their harness as soon as the first question is sent - Several Codex chats can answer at once, each on its own thread - Actions menu, pin, rename, copy and delete from the sidebar * Refactor AI chat components and enhance functionality - Updated `ChatTitle` to improve string sanitization. - Modified `InstalledAI` to enhance name extraction logic. - Renamed database tables from `conversation_meta` to `conversation_details` and `message_meta` to `message_details` for clarity. - Added export functionality for chat transcripts in `AIChatCoordinator`. - Improved UI elements in `AIChatDetailView` and `AIChatSidebarView` for better user experience. - Enhanced `AIChatWindowChrome` to streamline toolbar actions and improve navigation. - Updated keyboard shortcuts for new chat, settings, and other actions across various components. - Improved chat transcript rendering in `ChatMarkdownText` and `ChatTranscriptView`. - Enhanced `QuickAICoordinator` to support regeneration of responses. - Updated documentation to reflect changes in database structure and new features. * feat(ai): enhance AI chat sidebar and history functionality with new continue action * feat(ai): update AI chat window and sidebar dimensions for improved layout --------- Co-authored-by: abue-ammar <iabueammar@gmail.com>
159 lines
8.1 KiB
Markdown
159 lines
8.1 KiB
Markdown
# Tinycast
|
|
|
|
**A tiny, fully native macOS launcher. One hotkey, everything you reach for all day, under 100 MB of
|
|
RAM.**
|
|
|
|
<p align="center">
|
|
<a href="https://github.com/abue-ammar/tinycast/releases/latest">
|
|
<img alt="Latest release"
|
|
src="https://img.shields.io/github/v/release/abue-ammar/tinycast?sort=semver&style=flat&label=release&color=1F6FEB"></a>
|
|
<img alt="Swift 6.0"
|
|
src="https://img.shields.io/badge/Swift-6.0-F05138?style=flat&logo=swift&logoColor=white">
|
|
<img alt="macOS 26 or later"
|
|
src="https://img.shields.io/badge/macOS-26%2B-000000?style=flat&logo=apple&logoColor=white">
|
|
<a href="LICENSE">
|
|
<img alt="License: AGPL-3.0"
|
|
src="https://img.shields.io/badge/License-AGPL--3.0-3DA639?style=flat"></a>
|
|
<a href="https://discord.gg/v2Eeb4QQy3">
|
|
<img alt="Join the Tinycast Discord"
|
|
src="https://img.shields.io/badge/Discord-Join-5865F2?style=flat&logo=discord&logoColor=white"></a>
|
|
<a href="https://tinycast.dev/support">
|
|
<img alt="Support Tinycast"
|
|
src="https://img.shields.io/badge/Support-Tip%20the%20dev-EA4AAA?style=flat&logo=polar&logoColor=white"></a>
|
|
</p>
|
|
|
|
SwiftUI and AppKit, **zero third-party dependencies**, no Electron and no telemetry. It also **runs
|
|
real Raycast extensions**, rendered as native SwiftUI. Free, open source, and staying that way.
|
|
|
|
For anything private, email [iabueammar@gmail.com](mailto:iabueammar@gmail.com).
|
|
|
|
<p align="center">
|
|
<img src="docs/screenshot.png" alt="Tinycast command palette" width="720">
|
|
</p>
|
|
|
|
## Support
|
|
|
|
Tinycast is **free, and it stays that way**. If it earns a place in your daily flow, a one-off tip helps
|
|
keep it actively maintained. GitHub Sponsors isn't available in my country, so please support here:
|
|
|
|
<p align="center">
|
|
<a href="https://tinycast.dev/support">
|
|
<img alt="Support Tinycast" width="188" height="44" src="docs/support-button.svg"></a><br>
|
|
<sub>Payments are handled securely by <a href="https://polar.sh">Polar.sh</a>.</sub>
|
|
</p>
|
|
|
|
## Features
|
|
|
|
- **App launcher** — fuzzy-search and launch anything, pin favorites, see what's running, quit an app
|
|
or every app at once.
|
|
- **Global hotkey** — one shortcut summons the palette from anywhere.
|
|
- **Per-app hotkeys** — bind a key to an app; press it to toggle (focus/hide).
|
|
- **Search Files** — open files and folders from the folders you choose, through Spotlight, with no
|
|
index of our own.
|
|
- **Dictionary** — look a word up with the Define Word command, or define whatever you typed from the
|
|
launcher's fallbacks, read from the Mac's own dictionaries.
|
|
- **Clipboard history** — text and images, searchable, pasted back into the app you were using.
|
|
- **Calculator** — do math, unit, live currency and crypto conversions inline, right in the palette.
|
|
- **Quicklinks** — turn a URL, search, file or deeplink into a command, with placeholders for typed
|
|
input, the clipboard or the date.
|
|
- **Apple Shortcuts** — search and run the shortcuts you built in the Shortcuts app, with aliases and
|
|
global hotkeys.
|
|
- **Snippets** — reusable Markdown templates with dynamic placeholders, arguments, nested references
|
|
and optional keyword expansion.
|
|
- **Custom commands** — run named shell commands through fuzzy search or their own global hotkeys.
|
|
- **Window management** — 34 Rectangle-style actions: halves, quarters, thirds, sizing, nudging,
|
|
display moves, fullscreen and Spaces.
|
|
- **System actions** — lock, sleep, restart, empty trash, toggle appearance, Bluetooth, mute, hidden
|
|
files, and more.
|
|
- **Calendar and meetings** — your next meeting on the empty palette and in the menu bar, one key to
|
|
join it, or let it join itself.
|
|
- **Notes** — an unlimited collection of plain Markdown files in one floating editor, searchable from
|
|
the palette and rendered as you write.
|
|
- **Emoji picker** — a searchable emoji grid, one keystroke away.
|
|
- **AI chat** — use your own key or an installed AI account: ask Quick AI from the palette, or keep
|
|
longer conversations in the AI Chat window, with a searchable, pinnable history. Off out of the box,
|
|
like every AI feature.
|
|
- **Quick Actions** — fix grammar, rewrite, translate or summarize the selected text in any app.
|
|
- **Raycast extensions** — run the ones you already have natively, rendered as SwiftUI.
|
|
- **Backup and import** — export your settings to a file, or import your setup from Raycast.
|
|
|
|
## Install
|
|
|
|
First, add the tap:
|
|
|
|
```sh
|
|
brew trust --tap abue-ammar/tinycast # required for third-party taps
|
|
brew tap abue-ammar/tinycast
|
|
```
|
|
|
|
Then run the one line that matches your Mac:
|
|
|
|
| Your Mac | Install |
|
|
| -------------------------------- | ---------------------------------------- |
|
|
| Apple silicon, macOS 26 or newer | `brew install --cask tinycast` |
|
|
| Intel, macOS 26 | `brew install --cask tinycast-universal` |
|
|
|
|
Not sure which you have? **Apple menu → About This Mac.** Homebrew checks too, and refuses the
|
|
wrong one.
|
|
|
|
Want early builds? `brew install --cask tinycast@beta` puts `Tinycast Beta.app` beside the stable
|
|
app, with its own settings and permissions. Apple silicon, macOS 26+.
|
|
|
|
Homebrew clears the macOS quarantine flag on every install and update, so there is nothing else to
|
|
run. Downloading a DMG from [Releases](https://github.com/abue-ammar/tinycast/releases) instead?
|
|
Tinycast is self-signed, so clear the flag once:
|
|
`xattr -dr com.apple.quarantine "/Applications/Tinycast.app"`.
|
|
|
|
## Permissions
|
|
|
|
**Accessibility** — needed when Tinycast pastes or expands text into another app, and the only
|
|
permission snippet keyword expansion needs. You're prompted when you first use a feature that needs
|
|
it; grant access in **System Settings → Privacy & Security → Accessibility**. Snippets ship
|
|
disabled, and keystrokes are matched locally, never stored and never sent anywhere.
|
|
|
|
## Using it
|
|
|
|
1. Open **Settings → General** and record a global shortcut to summon Tinycast.
|
|
2. Press it anywhere → the palette floats in. Type to filter, **↵** to launch.
|
|
3. **Tab** switches between Apps and Clipboard; **↑/↓** move, **Esc** dismisses.
|
|
4. **Settings → Shortcuts** — search an app or custom command and record a global shortcut.
|
|
5. **Settings → Snippets** — enable the feature, then create templates with expansion keywords.
|
|
|
|
## Building from source
|
|
|
|
See **[docs/development.md](docs/development.md)** for the toolchain, build, packaging, release and
|
|
website workflows. **[docs/](docs/README.md)** indexes everything else — architecture, engineering
|
|
standards, the design system and one document per feature.
|
|
|
|
## Contributing
|
|
|
|
> [!IMPORTANT]
|
|
> **Open an issue before you write code — this is mandatory.** Get the bug or the feature agreed on
|
|
> first; discussing it in the issue (or on [Discord](https://discord.gg/v2Eeb4QQy3)) is strongly
|
|
> encouraged. A PR that doesn't close an issue marked `approved` is closed automatically however good
|
|
> the patch is, and the work is wasted. Docs-only fixes are the one exception.
|
|
>
|
|
> Tinycast's feature set is deliberately closed, and "another launcher has it" is not a reason on its
|
|
> own. Ask whether a feature is wanted before you ask for it.
|
|
|
|
Read **[CONTRIBUTING.md](CONTRIBUTING.md)** first — it covers the memory budget every PR is held to,
|
|
the before/after video requirement for visual changes, and why features get declined. Every PR fills
|
|
in the **[pull request template](.github/PULL_REQUEST_TEMPLATE.md)**. Security issues go through
|
|
[SECURITY.md](SECURITY.md), not the issue tracker.
|
|
|
|
Questions, ideas, or just want to follow along? **[Join the Discord](https://discord.gg/v2Eeb4QQy3)**.
|
|
|
|
## Star History
|
|
|
|
<a href="https://www.star-history.com/?repos=abue-ammar%2Ftinycast&type=date&legend=top-left">
|
|
<picture>
|
|
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/chart?repos=abue-ammar/tinycast&type=date&theme=dark&legend=top-left" />
|
|
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/chart?repos=abue-ammar/tinycast&type=date&legend=top-left" />
|
|
<img alt="Star History Chart" src="https://api.star-history.com/chart?repos=abue-ammar/tinycast&type=date&legend=top-left" />
|
|
</picture>
|
|
</a>
|
|
|
|
## License
|
|
|
|
[AGPL-3.0](LICENSE)
|