Commit graph

82 commits

Author SHA1 Message Date
CJ Pais
233db14d72 release v0.8.1 2026-03-26 09:16:55 +08:00
CJ Pais
557d274db6 release v0.8.0 2026-03-23 08:43:26 +08:00
CJ Pais
d33535cfd3 release v0.7.12 2026-03-19 08:33:28 +08:00
CJ Pais
789a4393e8 release v0.7.11 2026-03-17 12:24:32 +08:00
Evgeny Khudoba
7056edce28
fix(nix): replace manual hash management with bun2nix (#1021)
* fix(nix): replace manual hash management with bun2nix

Eliminate the recurring problem of Nix build hashes breaking whenever
bun dependencies change or the bun version in nixpkgs updates.

Changes:
- Add bun2nix flake input (pinned to v2.0.1) for per-package fetchurl
  expressions from bun.lock, replacing the single FOD hash approach
- Use allowBuiltinFetchGit for cargo git dependencies, removing manual
  outputHashes that required updates on every git dep change
- Add scripts/check-nix-deps.ts (cross-platform, runs via bun) that
  auto-regenerates .nix/bun.nix when bun.lock changes, triggered by
  the postinstall hook in package.json
- Update CI workflow to verify bun.nix is in sync and evaluate flake
- Remove scripts/update-nix-hashes.sh (no longer needed)

* style: format check-nix-deps.ts with prettier

* ci(nix): make nix-check job a required check

* fix(nix): address review feedback

- Fix bun2nix input pinning: use path syntax (github:owner/repo/tag)
  instead of ?tag= query parameter so flake.lock records the ref
  and `nix flake update` respects the pin
- Make check-nix-deps.ts exit with 0 on bun2nix failure so that
  `bun install` is not blocked for non-Nix developers (CI validates
  bun.nix independently)
- Fix stale reference to check-nix-deps.sh in flake.nix comment

* ci(nix): add full nix build step to CI workflow

Add `nix build .#handy -L --show-trace` after flake evaluation to
catch runtime build errors (broken dependencies, sandbox issues,
compilation failures) that flake eval alone cannot detect.

* fix(nix): update bun2nix pin from 2.0.1 to 2.0.8

bun2nix 2.0.1 has a bug in cache-entry-creator that causes
"ln: failed to create symbolic link '/p': Permission denied"
during the build. Version 2.0.8 fixes this.
2026-03-13 18:45:46 +08:00
CJ Pais
426031a8d7 Release v0.7.10 2026-03-10 13:17:20 +08:00
CJ Pais
e354c0afc8 update dialog package.json 2026-03-06 20:59:14 +08:00
CJ Pais
998449d2ad release v0.7.9 2026-03-01 22:05:33 +07:00
Brandon Chen
17d34a910f
fix: upgrade tauri-plugin-updater to v2.10.0 to fix duplicate registry entries (#873) (#876)
* fix: upgrade tauri-plugin-updater to v2.10.0 to fix duplicate registry entries (#873)

Upgrade tauri and tauri-plugin-updater to get bundle-specific target
resolution, which prevents NSIS-installed users from receiving MSI
updates via OTA and creating duplicate registry entries.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* move to my branch

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: CJ Pais <cj@cjpais.com>
2026-03-01 20:41:55 +07:00
CJ Pais
52047ae06e release v0.7.8 2026-02-24 23:05:11 +08:00
CJ Pais
74951cfca4 release v0.7.7 2026-02-20 13:25:25 +08:00
CJ Pais
58b95c5c95 release v0.7.6 2026-02-17 13:02:48 +08:00
CJ Pais
36c29b6628 release v0.7.5 2026-02-11 20:29:33 +08:00
CJ Pais
d70d076bdc release v0.7.4 2026-02-11 11:38:14 +08:00
CJ Pais
6a099fb873 release v0.7.3 2026-02-10 12:05:37 +08:00
CJ Pais
9d48605fd7 release v0.7.2 2026-02-08 12:21:21 +08:00
Viren Mohindra
ef24cfefda
feat: add models settings page with filtering and management (#478)
* feat: add models settings page with filtering and management

- add dedicated models settings page in sidebar
- reuse ModelCard component from onboarding for consistent UI
- add filter buttons for all/multi-language/translation models
- add model deletion with native confirmation dialog (tauri-plugin-dialog)
- consolidate model event listeners into useModels hook (Zustand store)
- remove duplicate event listeners from ModelSelector, LanguageSelector, TranslateToEnglish
- gate AccessibilityPermissions to macOS only
- add is_recommended field to model registry for featured models
- remove unused get_recommended_first_model command
- add translations for all 9 supported languages

* feat: add language filter to models settings page

adds a searchable language dropdown filter to the models page that lets users filter models by language support. when a non-english language is selected, models that don't support multiple languages (like parakeet) are hidden.

- add searchable language dropdown (right-aligned in filter row)
- filter models using supports_language_selection capability
- add allLanguages translation key to all 10 locales

* feat: add translation consistency checker script

- add scripts/check-translations.cjs to validate all language files
- script dynamically discovers languages from directory structure
- checks that all languages have same keys as english reference
- detects missing and extra keys in each language
- add check:translations npm script
- integrate into github actions lint workflow
- validates translations on every pull request

* fix: update imports and add missing translations after rebase

- replace useModels hook with useModelStore in components
- add permission error keys to all languages
- add model settings keys to cs and tr (new languages from main)

* fix: translate english placeholders in cs and tr locale files

* refactor: simplify model dropdown and migrate store to immer

- model dropdown now only shows downloaded models (no download/delete)
- convert store to immer with record types for immutability
- remove unused translation keys (welcome, downloadPrompt, etc.)
- add missing moonshine-base model fields
- sync translations after rebase

* fix: add download cancellation support and ui improvements

- add full download cancellation with Arc<AtomicBool> flags in rust backend
- add progress event throttling (100ms) to prevent ui freeze
- add cancel button to model card in settings page
- add model-deleted event listener to refresh dropdown after deletion
- remove pink background from recommended models in settings (keep badge only)
- add cancel/cancelDownload translation keys to all 14 languages

* fix: remove duplicate language/translate settings from general and advanced

settings are now only in ModelSettingsCard, not duplicated in their old locations

* fix: prevent model dropdown from being clipped by window edge

* add languages explicitly, clean up some ui

* fix: clear bottom progress bar when download is cancelled

The ModelSelector component maintains its own local state for download
progress. When a download was cancelled, the Rust backend would update
its state but never emitted an event to notify the frontend. This caused
the bottom progress bar to remain stuck showing "Downloading X%".

Added model-download-cancelled event emission in Rust and corresponding
listener in ModelSelector to clear progress state on cancellation.

* fix: align model card content to top to prevent floating elements

Changed ModelCard flex alignment from items-center to items-start so
the accuracy/speed bars stay at the top when the card expands (e.g.,
during download with progress bar visible).

* fix: prevent model deletion from interrupting active extractions

Added extracting_models HashSet to track models currently being
extracted. The update_download_status() function now skips cleanup
of .extracting directories for models that are actively extracting,
preventing a race condition where deleting one model would interrupt
another model's extraction process.

* refactor: migrate ModelCard buttons to Button component

Added two new Button variants for common patterns:
- primary-soft: soft/tinted primary buttons (used for download)
- danger-ghost: subtle destructive actions (used for delete/cancel)

Migrated all hardcoded buttons in ModelCard to use the shared Button
component for consistency and maintainability.

* feat: separate downloaded and available models into sections

Split the models list into "Your Models" and "Available to Download"
sections for clearer visual distinction between downloaded and
downloadable models.

Also adds missing translation keys to all locales:
- modelSelector.capabilities.singleLanguage
- modelSelector.capabilities.languageOnly
- settings.models.yourModels
- settings.models.availableModels

* fix: add missing translations after rebase onto main

add post-processing hotkey translations to all 15 locales and
backfill 29 missing keys for korean locale added in main.

* fix: add label to model delete button for clearer destructive state

* check translations as typescript

* format

* better text for dropdown

* wip ui tweaks

* rounded + ui tweaks

* fix download not 0% immediately, ui tweaks

* tweak name

* block for model downloading in onboarding

* small fixes

---------

Co-authored-by: CJ Pais <cj@cjpais.com>
2026-02-08 12:18:22 +08:00
Josh Ribakoff
9ef71046ba
chore: add Playwright E2E testing infrastructure (#673)
* feat: add Playwright testing infrastructure

- Add @playwright/test dependency
- Add playwright.config.ts with Chromium setup
- Add test scripts (test, test:ui, test:headed)
- Add hello world test to verify setup works

This is the foundation for adding comprehensive E2E tests.
Tests run against the Vite dev server on port 1420.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* ci: add E2E test workflow

Runs Playwright tests on pull requests using Chromium.
Uploads test artifacts on failure.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* fix: rename e2e to playwright, fix CI test

- Rename workflow from "E2E Tests" to "Playwright"
- Rename scripts from test:e2e to test:playwright
- Fix test to not require Tauri APIs (just check server responds)
- Run prettier

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* fix

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: CJ Pais <cj@cjpais.com>
2026-02-06 17:15:19 +08:00
CJ Pais
e2028a4b82 release v0.7.1 2026-02-01 20:58:44 +08:00
CJ Pais
f38b52e123 v0.7.0 2026-01-20 08:31:38 +08:00
Josh Ribakoff
f9d2aa68c3
refactor: use Immer for immutable state updates (#527)
* refactor: use Immer for immutable state updates

Replace Set/Map with Record types and use Immer's produce() for
immutable state updates. This fixes mutation bugs where .add()/.set()
were mutating state before copying (e.g., `new Set(prev.add(id))`).

Changes:
- Add immer dependency
- Convert Set<string> to Record<string, true> (sparse hash set pattern)
- Convert Map<K,V> to Record<K,V>
- Use produce() for all state mutations
- Update prop types in child components

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* move deps back to where they started

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: CJ Pais <cj@cjpais.com>
2026-01-19 08:47:43 +08:00
CJ Pais
738c5a82d8 release v0.6.11 2026-01-14 09:54:55 +08:00
CJ Pais
c606bf631b release v0.6.10 2026-01-04 07:52:38 +08:00
CJ Pais
d06d318a66 Release v0.6.9 2025-12-23 17:44:01 +07:00
CJ Pais
add9544d86 release v0.6.8 2025-12-12 22:15:00 +07:00
CJ Pais
8ac98b33bb release v0.6.7 2025-12-12 16:54:44 +07:00
CJ Pais
f87051f464
Add Internationalization Support (#437)
* basic i18n

* tweak

* translate app

* add linting to make sure we have translations

* run linter on pr

* format
2025-12-12 11:16:54 +07:00
CJ Pais
700eb71abb Release v0.6.6 2025-12-11 17:29:35 +07:00
CJ Pais
933c1b14c2 release v0.6.5 2025-12-08 09:23:56 +07:00
CJ Pais
45e7d01e8a release v0.6.4 2025-11-29 16:45:33 +07:00
CJ Pais
6d6d7fb279 release v0.6.3 2025-11-28 10:18:18 +07:00
CJ Pais
0c5989d824 Release v0.6.2 2025-11-19 11:03:33 +07:00
CJ Pais
c359e3ff17 Release v0.6.1 2025-11-17 13:02:35 +07:00
CJ Pais
70ec82285a
format everything (#323) 2025-11-10 11:39:14 +08:00
CJ Pais
3f9d93aa9b release v0.6.0 2025-11-05 18:31:34 -08:00
Luis Eduardo
f7380fa69a
feat: LLM based post-processing (#222)
* Add LLM post-processing feature with settings management and UI integration

* Refactor LLM post-processing settings and prompt selection logic

* Rename CLAUDE.md to more standard AGENTS.md

* Replace Open Router with OpenAI Compatible endpoints for post-processing

* Fix post processing settings api styles

* refactor or something

* simplify

* cleanup a bit?

* remove useless code

* minor improvements

* fix laggy textarea

* Store post-processing results in db

* fix text color

* new default prompt

---------

Co-authored-by: CJ Pais <cj@cjpais.com>
2025-11-05 18:29:03 -08:00
CJ Pais
907a6f0f77 release 0.5.5 2025-11-03 11:17:18 -08:00
CJ Pais
ae406aebe2 fix build 2025-10-27 11:52:23 -07:00
CJ Pais
dd40d8eb27 update deps 2025-10-27 11:05:55 -07:00
CJ Pais
0aa86a8cbd Release v0.5.4 2025-10-17 16:58:58 -07:00
CJ Pais
c291b8470f Release v0.5.3 2025-10-13 14:46:23 -07:00
CJ Pais
ee6c60642f release v0.5.2 2025-10-09 19:31:12 -07:00
CJ Pais
3bf4ac819e 0.5.1 2025-09-28 07:44:37 -07:00
CJ Pais
ea375d942b Release v0.5.0 2025-09-09 18:59:50 -07:00
CJ Pais
7be3fac4b1 Release v0.4.2 2025-09-06 14:08:31 -07:00
CJ Pais
76785d5b47 release 0.4.1 2025-09-05 22:19:25 -07:00
CJ Pais
40cd7ae71b release v0.4.0 2025-09-05 16:29:16 -07:00
CJ Pais
7638f6b827
basic working history (#104) 2025-09-05 16:25:38 -07:00
CJ Pais
d6684ccb21
UI v2 (#103)
* wip ui

* pretty much fully new settings page

* proper dark/light mode

* slight style tweak for sidebar

* add about
2025-09-05 12:56:55 -07:00
CJ Pais
f52a43fdbf release v0.3.9 2025-09-03 19:01:22 -07:00