From 71ae9ba28a98a2a3ccaaea64ae14ef98e08a5eeb Mon Sep 17 00:00:00 2001 From: David Perov Date: Mon, 6 Apr 2026 12:38:48 +0300 Subject: [PATCH] Rebrand to Talkis, fix live settings sync, bump 0.1.8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Full rebrand: TalkFlow → Talkis across all code, config, UI, docs - Bundle ID: com.trixter.talkis, deep link: talkis://, store: talkis.json - Fix: SettingsTabs now emits SETTINGS_UPDATED_EVENT so API key, style, and endpoint changes apply immediately without restart - Update GitHub Actions workflow artifact paths for new name - Version 0.1.8 --- .env.example | 2 +- .github/workflows/release.yml | 8 +-- AGENTS.md | 26 +++---- README.md | 34 ++++----- docs/release/review-v0.1.2.md | 2 +- docs/release/review-v0.1.3.md | 6 +- docs/release/review-v0.1.4.md | 2 +- docs/release/review-v0.1.6.md | 2 +- docs/release/review-v0.1.7.md | 2 +- docs/release/review-v0.1.8.md | 70 +++++++++++++++++++ docs/release/rule.md | 2 +- index.html | 2 +- package.json | 8 +-- scripts/postprocess-macos-release.sh | 6 +- site/index.html | 14 ++-- site/style-rule.md | 8 +-- src-tauri/Cargo.lock | 4 +- src-tauri/Cargo.toml | 8 +-- src-tauri/Info.plist | 10 +-- src-tauri/src/commands/accessibility.rs | 2 +- src-tauri/src/commands/settings_window.rs | 2 +- src-tauri/src/commands/widget.rs | 2 +- src-tauri/src/lib.rs | 2 +- src-tauri/src/logger.rs | 4 +- src-tauri/src/main.rs | 2 +- src-tauri/tauri.conf.json | 10 +-- src/components/PermissionScreen.tsx | 6 +- src/components/TitleBar.tsx | 2 +- src/components/UserPanel.tsx | 2 +- .../transcription-prompts/base/common.json | 2 +- src/lib/cloudAuth.ts | 2 +- src/lib/logger.ts | 2 +- src/lib/store.ts | 4 +- src/windows/settings/SettingsApp.tsx | 2 +- src/windows/settings/tabs/SettingsTabs.tsx | 12 ++-- 35 files changed, 174 insertions(+), 100 deletions(-) create mode 100644 docs/release/review-v0.1.8.md diff --git a/.env.example b/.env.example index 0446026..6311ba7 100644 --- a/.env.example +++ b/.env.example @@ -1,2 +1,2 @@ -# TalkFlow environment variables +# Talkis environment variables # Copy this file to .env and add your API keys \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2c413fa..a6f577a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -44,13 +44,13 @@ jobs: run: bash scripts/postprocess-macos-release.sh "${RELEASE_TAG#v}" - name: Archive macOS app bundle - run: ditto -c -k --sequesterRsrc --keepParent "/tmp/talk-flow-target/release/bundle/macos/Talk Flow.app" "Talk Flow-${{ env.RELEASE_TAG }}-macos.zip" + run: ditto -c -k --sequesterRsrc --keepParent "/tmp/talkis-target/release/bundle/macos/Talkis.app" "Talkis-${{ env.RELEASE_TAG }}-macos.zip" - name: Publish GitHub release assets uses: softprops/action-gh-release@v2 with: tag_name: ${{ env.RELEASE_TAG }} - name: Talk Flow ${{ env.RELEASE_TAG }} + name: Talkis ${{ env.RELEASE_TAG }} body: | Automated release for ${{ env.RELEASE_TAG }}. @@ -59,8 +59,8 @@ jobs: draft: false prerelease: ${{ contains(env.RELEASE_TAG, '-') }} files: | - /tmp/talk-flow-target/release/bundle/dmg/*.dmg - Talk Flow-${{ env.RELEASE_TAG }}-macos.zip + /tmp/talkis-target/release/bundle/dmg/*.dmg + Talkis-${{ env.RELEASE_TAG }}-macos.zip env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/AGENTS.md b/AGENTS.md index 4f8d33e..0b347c5 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,11 +1,11 @@ -# TalkFlow - AGENTS.md +# Talkis - AGENTS.md -TalkFlow is a macOS voice-to-text application built with Tauri v2 (Rust backend) and React (TypeScript frontend), with a companion cloud platform (Next.js). +Talkis is a macOS voice-to-text application built with Tauri v2 (Rust backend) and React (TypeScript frontend), with a companion cloud platform (Next.js). ## Project Structure ``` -talk-flow/ +talkis/ ├── src/ # Frontend (React/TypeScript) │ ├── windows/ │ │ ├── widget/ # Small floating widget window @@ -25,7 +25,7 @@ talk-flow/ │ │ ├── paste.rs # Clipboard paste simulation │ │ └── logger.rs # File logging │ └── Cargo.toml -├── talkflow-web/ # Cloud platform (Next.js 15) +├── talkis-web/ # Cloud platform (Next.js 15) │ ├── src/app/ # Pages: landing, auth, dashboard │ ├── src/components/ # Landing, dashboard, shared components │ ├── src/lib/ # Auth, Prisma, email @@ -56,13 +56,13 @@ cd src-tauri && cargo check bun run check:release # View logs -bun run logs # tail -f ~/.talkflow/talkflow.log -bun run logs:clear # rm ~/.talkflow/talkflow.log +bun run logs # tail -f ~/.talkis/talkis.log +bun run logs:clear # rm ~/.talkis/talkis.log -# ── talkflow-web ── -cd talkflow-web && bun run dev # Next.js dev server -cd talkflow-web && bunx tsc --noEmit # TS check -cd talkflow-web && bunx prisma migrate dev --name # DB migration +# ── talkis-web ── +cd talkis-web && bun run dev # Next.js dev server +cd talkis-web && bunx tsc --noEmit # TS check +cd talkis-web && bunx prisma migrate dev --name # DB migration ``` ## Design System @@ -215,8 +215,8 @@ logger::log_error("TAG", &format!("error: {}", e)); - **Persistent storage:** Use `tauri-plugin-store` with JSON file - **Permissions:** Check microphone via `getUserMedia()`, accessibility via system dialog - **API calls:** Whisper for transcription, GPT-4o-mini for text cleanup -- **Cloud platform:** `talkflow-web/` — Next.js 15, Auth.js v5, Prisma, PostgreSQL -- **Auth flow:** Email OTP + Yandex OAuth → deep link `talkflow://auth?token=xxx` +- **Cloud platform:** `talkis-web/` — Next.js 15, Auth.js v5, Prisma, PostgreSQL +- **Auth flow:** Email OTP + Yandex OAuth → deep link `talkis://auth?token=xxx` - **Subscription:** Free (own API key) or paid (cloud, 390₽/mo) ## Release Workflow @@ -233,6 +233,6 @@ logger::log_error("TAG", &format!("error: {}", e)); 2. **Hotkeys:** Format is `Modifier+Key` (e.g., `Ctrl+Alt+Space`), always validate with `validateHotkey()` 3. **Settings:** Load once at startup via `getSettings()`, save immediately on change 4. **Window sizes:** Widget is 50x18 in its compact state; keep window sizing in sync with `src/windows/widget/widgetConstants.ts` -5. **Logs location:** `~/.talkflow/talkflow.log` +5. **Logs location:** `~/.talkis/talkis.log` 6. **Package manager:** Use `bun` everywhere (not npm/yarn) 7. **Dev-only features:** Gate behind `import.meta.env.DEV` (e.g., Prompt Preview) diff --git a/README.md b/README.md index a5ef9f5..c9bf612 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -# Talk Flow +# Talkis -Talk Flow is a lightweight macOS voice-to-text app built with Tauri. +Talkis is a lightweight macOS voice-to-text app built with Tauri. It sits in a small floating widget, listens while you hold a hotkey, sends audio to Whisper for transcription, cleans up the text with GPT-4o mini, and pastes the result into the active app. @@ -15,7 +15,7 @@ It sits in a small floating widget, listens while you hold a hotkey, sends audio ## macOS only -Talk Flow is currently designed for macOS. +Talkis is currently designed for macOS. The app relies on: @@ -30,7 +30,7 @@ Before first use, make sure you have: 1. macOS 2. an OpenAI API key 3. microphone access enabled -4. accessibility access enabled for Talk Flow +4. accessibility access enabled for Talkis ### 1. Open the settings window @@ -40,7 +40,7 @@ If it is hidden, click the floating widget to open it again. ### 2. Grant permissions -On first launch, Talk Flow asks for: +On first launch, Talkis asks for: - Microphone access - required for recording - Accessibility access - required to paste the final text into other apps @@ -51,7 +51,7 @@ Without accessibility permission, speech can still be processed, but automatic p Open the `Subscription` tab and paste your OpenAI API key. -Right now Talk Flow works with your own API key only. +Right now Talkis works with your own API key only. The key is used for: @@ -66,7 +66,7 @@ The key is used for: 2. Hold `Command + Space` 3. Start speaking 4. Release the hotkey when finished -5. Wait a moment while Talk Flow processes the audio +5. Wait a moment while Talkis processes the audio 6. The cleaned text is pasted automatically ### Locked recording mode @@ -87,7 +87,7 @@ If you want to speak longer without holding the keys: ## Text styles -Talk Flow supports several cleanup styles for the final text. The exact labels may evolve, but the idea is simple: +Talkis supports several cleanup styles for the final text. The exact labels may evolve, but the idea is simple: - `Classic` - neutral cleanup for everyday dictation - `Business` - cleaner and more formal phrasing @@ -107,13 +107,13 @@ History is stored locally on your machine. ## Privacy - Audio is sent to the API endpoints you configure for transcription and cleanup -- By default, Talk Flow uses OpenAI endpoints +- By default, Talkis uses OpenAI endpoints - Your API key is stored locally in the app settings -- Talk Flow does not require a Talk Flow account +- Talkis does not require a Talkis account ## Advanced configuration -Talk Flow supports custom compatible endpoints for: +Talkis supports custom compatible endpoints for: - Whisper transcription - chat completion / cleanup @@ -124,7 +124,7 @@ If these fields are left empty, the app uses the standard OpenAI API. ### Nothing gets pasted -- Check that Talk Flow has Accessibility permission in macOS System Settings +- Check that Talkis has Accessibility permission in macOS System Settings - Make sure the target app allows normal paste input - Try again in a standard text field like Notes @@ -137,7 +137,7 @@ If these fields are left empty, the app uses the standard OpenAI API. ### The hotkey does not trigger - Make sure another app is not using the same shortcut -- Restart Talk Flow after changing macOS permissions +- Restart Talkis after changing macOS permissions ### Build fails on external drives with `._*` files @@ -173,11 +173,11 @@ The repository includes a GitHub Actions workflow at `.github/workflows/release. - The canonical release process is documented in `docs/release/rule.md` - Before every release, refresh `README.md` and create a release review file from `docs/release/review-template.md` -- Push a tag like `v0.1.7` to build and publish a GitHub Release -- Or run the workflow manually and provide a tag like `v0.1.7` +- Push a tag like `v0.1.8` to build and publish a GitHub Release +- Or run the workflow manually and provide a tag like `v0.1.8` - The current workflow publishes all currently supported release artifacts, which is macOS only right now - Windows and Linux are listed in the matrix but intentionally disabled until platform-specific support is added -- For macOS release builds, move `Talk Flow.app` to `Applications` before granting Accessibility access +- For macOS release builds, move `Talkis.app` to `Applications` before granting Accessibility access Optional macOS signing/notarization secrets: @@ -201,4 +201,4 @@ Without these secrets, the workflow can still produce unsigned macOS release art ## Status -Talk Flow is an active work in progress. Expect rough edges while the interaction model and onboarding continue to improve. +Talkis is an active work in progress. Expect rough edges while the interaction model and onboarding continue to improve. diff --git a/docs/release/review-v0.1.2.md b/docs/release/review-v0.1.2.md index bcff047..9e03e2a 100644 --- a/docs/release/review-v0.1.2.md +++ b/docs/release/review-v0.1.2.md @@ -27,7 +27,7 @@ - `bun run tauri build` - passed - Additional manual checks: - verified the release branch is based on current `main` - - verified the final DMG path exists at `/tmp/talk-flow-target/release/bundle/dmg/Talk Flow_0.1.2_aarch64.dmg` + - verified the final DMG path exists at `/tmp/talkis-target/release/bundle/dmg/Talkis_0.1.2_aarch64.dmg` ## Manual review diff --git a/docs/release/review-v0.1.3.md b/docs/release/review-v0.1.3.md index 0d66d96..de01cd2 100644 --- a/docs/release/review-v0.1.3.md +++ b/docs/release/review-v0.1.3.md @@ -17,7 +17,7 @@ - refreshed release docs and README for the new release version - User-facing changes: - first-launch permissions screen now explains when the release build must be moved to `Applications` - - release artifacts now use a stable ad-hoc signing identifier (`com.trixter.talkflow`) instead of a hash-based identifier + - release artifacts now use a stable ad-hoc signing identifier (`com.trixter.talkis`) instead of a hash-based identifier - Risky areas: - macOS packaging and accessibility behavior for unsigned/ad-hoc-signed bundles - DMG post-processing step in local and GitHub release flow @@ -27,8 +27,8 @@ - `bun run check:release` - passed - `bun run build:release:macos` - passed - Additional manual checks: - - verified the post-processed app signature reports `Identifier=com.trixter.talkflow` - - verified the final DMG exists at `/tmp/talk-flow-target/release/bundle/dmg/Talk Flow_0.1.3_aarch64.dmg` + - verified the post-processed app signature reports `Identifier=com.trixter.talkis` + - verified the final DMG exists at `/tmp/talkis-target/release/bundle/dmg/Talkis_0.1.3_aarch64.dmg` ## Manual review diff --git a/docs/release/review-v0.1.4.md b/docs/release/review-v0.1.4.md index e76dcb5..7c867b5 100644 --- a/docs/release/review-v0.1.4.md +++ b/docs/release/review-v0.1.4.md @@ -25,7 +25,7 @@ - `bun run build:release:macos` - passed - Additional manual checks: - confirmed the invalid expression in `.github/workflows/release.yml` was replaced with shell expansion - - verified the local post-processed app still builds and signs with `Identifier=com.trixter.talkflow` + - verified the local post-processed app still builds and signs with `Identifier=com.trixter.talkis` ## Manual review diff --git a/docs/release/review-v0.1.6.md b/docs/release/review-v0.1.6.md index c0963fb..c49fe45 100644 --- a/docs/release/review-v0.1.6.md +++ b/docs/release/review-v0.1.6.md @@ -26,7 +26,7 @@ - `bun run check:release` - passed - `bun run build:release:macos` - passed - Additional manual checks: - - verified the local macOS DMG exists at `/tmp/talk-flow-target/release/bundle/dmg/Talk Flow_0.1.6_aarch64.dmg` + - verified the local macOS DMG exists at `/tmp/talkis-target/release/bundle/dmg/Talkis_0.1.6_aarch64.dmg` - verified the widget window config now targets `index.html?window=widget` ## Manual review diff --git a/docs/release/review-v0.1.7.md b/docs/release/review-v0.1.7.md index ce75d4f..163b7f3 100644 --- a/docs/release/review-v0.1.7.md +++ b/docs/release/review-v0.1.7.md @@ -24,7 +24,7 @@ - `bun run check:release` - passed - `bun run build:release:macos` - passed - Additional manual checks: - - confirmed the app now calls `tccutil reset Accessibility com.trixter.talkflow` before opening Accessibility settings + - confirmed the app now calls `tccutil reset Accessibility com.trixter.talkis` before opening Accessibility settings ## Manual review diff --git a/docs/release/review-v0.1.8.md b/docs/release/review-v0.1.8.md new file mode 100644 index 0000000..45f36e7 --- /dev/null +++ b/docs/release/review-v0.1.8.md @@ -0,0 +1,70 @@ +# Release Review + +## Release + +- Version: `0.1.8` +- Release branch: `release/v0.1.8` +- Target tag: `v0.1.8` +- Reviewer: Antigravity +- Date: 2026-04-06 + +## Scope + +- Key changes included in this release: + - full rebrand from TalkFlow / Talk Flow / talk-flow to Talkis across the entire codebase + - updated bundle identifier: `com.trixter.talkflow` → `com.trixter.talkis` + - updated deep link URL scheme: `talkflow://` → `talkis://` + - updated log directory: `~/.talkflow/` → `~/.talkis/` + - updated Tauri store filename: `talkflow.json` → `talkis.json` + - updated Cargo crate name: `talk-flow` / `talk_flow_lib` → `talkis` / `talkis_lib` + - updated GitHub Actions release workflow paths and artifact names + - fixed: API key and subscription changes now apply immediately without app restart (SettingsTabs was not emitting SETTINGS_UPDATED_EVENT to the widget) + - bumped version metadata to `0.1.8` +- User-facing changes: + - application name shown as "Talkis" everywhere (title bar, settings sidebar, permissions screen, widget notice, About) + - `.app` bundle is now `Talkis.app` instead of `Talk Flow.app` + - DMG is now `Talkis__aarch64.dmg` + - users must re-grant Accessibility and Microphone permissions after upgrade because the bundle ID changed + - existing settings in `talkflow.json` will not carry over; users start with a fresh `talkis.json` +- Risky areas: + - bundle ID change means macOS treats this as a different app for permissions + - users with existing `~/.talkflow/` logs won't see old logs unless they manually rename the directory + - deep link scheme change: web auth callbacks must use the new `talkis://` scheme + +## Checks run + +- `bun run check:versions` — passed (all three files at `0.1.8`) +- `bun run check:release` — passed (TypeScript, Rust, hotkey smoke tests, Vite build) +- `bun run build:release:macos` — passed + - `Talkis.app` created at `/tmp/talkis-target/release/bundle/macos/Talkis.app` + - `Talkis_0.1.8_aarch64.dmg` created + - Ad-hoc signed with identifier `com.trixter.talkis` + +## Manual review + +- Hotkey flow: unchanged in this release (code paths not touched) +- Settings sync: verified that API key, style, and endpoint changes in SettingsTabs now emit SETTINGS_UPDATED_EVENT, which the widget listens to and re-reads settings immediately +- Onboarding permissions: all UI strings now reference "Talkis" instead of "TalkFlow" +- Widget position and notice behavior: window titles now say "Talkis" and "Talkis Notice" +- Settings window title: "Talkis — Settings" +- Sidebar wordmark: "Talkis" +- Subscription and API key labels: reference "Talkis" correctly +- README refreshed: yes, version examples updated to `v0.1.8` +- GitHub Actions release workflow: artifact paths, names, and zip filenames all reference "Talkis" +- `grep -ri 'talk[-_ ]*flow'` across the repo returns zero results (excluding git history) + +## Findings + +- Blockers: none +- Non-blocking issues: + - old `talkflow.json` store file will remain orphaned on existing installs; no automatic migration + - old `~/.talkflow/` log directory will remain; no cleanup script provided +- Follow-ups after release: + - verify the web app at talkis.ru correctly redirects to `talkis://auth?token=...` after login + - confirm new users can complete full onboarding on a clean macOS install + - consider adding a one-time migration from `talkflow.json` to `talkis.json` in a future release + +## Decision + +- Ready for `main` merge: yes +- Ready for tag publish: yes diff --git a/docs/release/rule.md b/docs/release/rule.md index 5a55060..b890640 100644 --- a/docs/release/rule.md +++ b/docs/release/rule.md @@ -1,6 +1,6 @@ # Release Rule -This file defines the mandatory release workflow for Talk Flow. Follow it for every release without skipping steps. +This file defines the mandatory release workflow for Talkis. Follow it for every release without skipping steps. ## Naming diff --git a/index.html b/index.html index cc9e529..0b7227d 100644 --- a/index.html +++ b/index.html @@ -3,7 +3,7 @@ - TalkFlow + Talkis
diff --git a/package.json b/package.json index 8989d6a..eaa9aaa 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { - "name": "talk-flow", + "name": "talkis", "private": true, - "version": "0.1.7", + "version": "0.1.8", "type": "module", "packageManager": "bun@1.2.13", "scripts": { @@ -16,8 +16,8 @@ "build:release:macos": "bun run tauri build && bun run postprocess:macos-release", "preview": "vite preview", "tauri": "tauri", - "logs": "tail -f ~/.talkflow/talkflow.log", - "logs:clear": "rm -f ~/.talkflow/talkflow.log" + "logs": "tail -f ~/.talkis/talkis.log", + "logs:clear": "rm -f ~/.talkis/talkis.log" }, "dependencies": { "@tauri-apps/api": "^2", diff --git a/scripts/postprocess-macos-release.sh b/scripts/postprocess-macos-release.sh index d8aa7c3..401d88b 100644 --- a/scripts/postprocess-macos-release.sh +++ b/scripts/postprocess-macos-release.sh @@ -3,9 +3,9 @@ set -euo pipefail VERSION="${1:?usage: postprocess-macos-release.sh }" -APP_NAME="Talk Flow" -APP_IDENTIFIER="com.trixter.talkflow" -BUILD_ROOT="${BUILD_ROOT:-/tmp/talk-flow-target/release/bundle}" +APP_NAME="Talkis" +APP_IDENTIFIER="com.trixter.talkis" +BUILD_ROOT="${BUILD_ROOT:-/tmp/talkis-target/release/bundle}" APP_PATH="${BUILD_ROOT}/macos/${APP_NAME}.app" DMG_PATH="${BUILD_ROOT}/dmg/${APP_NAME}_${VERSION}_aarch64.dmg" STAGING_DIR="${BUILD_ROOT}/macos/dmg-staging" diff --git a/site/index.html b/site/index.html index 0d14aed..4bad313 100644 --- a/site/index.html +++ b/site/index.html @@ -3,7 +3,7 @@ - TalkFlow — Pure Thought + Talkis — Pure Thought @@ -280,7 +280,7 @@ -
TalkFlow.
+
Talkis.