* feat: add drizzle orm
* feat: update drizzle configuration and schema management
- Added a check for DB_FILE_NAME in drizzle.config.ts to ensure it's set.
- Updated package.json to change the package name to @kksh/drizzle and added exports for schema and relations.
- Enhanced README.md with instructions for using the schema generation.
- Refactored schema.ts for improved readability and organization of imports.
* add tauri-plugin-sql
* feat: add database select and execute commands
- Introduced `select` and `execute` functions in the database module to facilitate querying and executing SQL commands.
- Updated the Tauri plugin to expose these commands, allowing for database interactions from the frontend.
- Added corresponding permissions for the new commands in the permissions configuration.
- Enhanced the database library with JSON value handling for query parameters.
* fix: sqlite select command
* drizzle ORM verified working
* refactor: clean up database module by removing unused SelectQueryResult type and disabling eslint for explicit any usage
* pnpm lock update
* Update enum definition for type safety
- Changed enum to use 'as const' for better type inference
- Ensured more robust handling of extension publish sources
* reimplemented most db command functions with ORM (migrate from tauri command invoke
* fixed searchExtensionData orm function
* Refactor ORM commands and searchExtensionData function for improved readability and consistency
- Reformatted import statements for better organization.
- Cleaned up whitespace and indentation in searchExtensionData function.
- Enhanced readability of SQL conditions and query building logic.
- Disabled eslint for explicit any usage in the troubleshooters page.
* Fix test assertions in database module to use array indexing for results
format rust code
* update deno lock
* move drizzle from desktop to drizzle package
* update pnpm version and lock
* refactor: migrate db tauri commands to drizzle
* refactor: remove unused extension and command CRUD operations from db module
* Add loading animation to general settings
* Update dependencies and integrate @tauri-store/svelte
- Added `bon` and `bon-macros` packages to Cargo.lock.
- Upgraded `tauri-plugin-svelte`, `tauri-store`, and related packages to their latest versions.
- Updated `@tauri-store/svelte` integration in the desktop app, including changes to app configuration and layout handling.
- Adjusted pnpm-lock.yaml to reflect updated package versions and added new dependencies.
- Introduced a new app configuration file for development.
* Enhance loading animation handling in FullScreenLoading component
- Integrated conditional rendering for loading animations based on app configuration.
- Updated default loading animation to "kunkun-dancing" in app configuration.
- Adjusted general settings to ensure proper type handling for language labels.
- Modified ui-iframe component to manage full-screen loading state more effectively.
* remove a mis-placed config file
* Refactor window handling to ensure focus after showing
- Updated various components to use promise chaining with `show()` and `setFocus()` for better window management.
- Introduced `data.win` in multiple places to streamline access to the current webview window.
- Enhanced splashscreen and app layout handling to improve user experience by ensuring the window is focused after being shown.
* Refactor window handling to improve safety and consistency
- Introduced optional chaining for `data.win` to prevent potential runtime errors when accessing window methods.
- Updated various components to ensure proper handling of window focus and visibility.
- Enhanced the layout and extension pages to utilize the current webview window more effectively, improving overall user experience.
* remove supabase package
* upgrade valibot
* removed supabase package
Migration not complete yet
* update submodule
* fixed some supabase errors
* Add new fields to extension models
- Added `id` field to `ExtPublish`
- Expanded `DBExtension` with multiple new properties:
- `api_version`, `author_id`, `created_at`,
- `downloads`, `icon`, `identifier`,
- `long_description`, `name`,
- `readme`, `short_description`,
- and `tarball_size`
* Refactor: clean up unused Supabase imports
- Removed commented-out Supabase imports from various files to streamline the codebase.
- Updated `created_at` type in `ExtPublish` model from `date` to `string` for consistency.
* update icon enum to union
* fix type errors after removing supabase
* format
* more types fixed
* feat: enhance command handling and update SDK version
* update deno lock
* chore: update kkrpc and tauri-api-adapter versions, enhance serialization handling
- Bump kkrpc version to 0.2.2 in multiple packages including desktop and api.
- Update tauri-api-adapter version to 0.3.27.
- Introduce a new utility function to determine kkrpc serialization based on API version.
- Refactor RPC channel initialization to include serialization version in desktop extension handling.
- Increment desktop package version to 0.1.36 and api package version to 0.1.7.
* chore: update dependencies in pnpm-lock and package.json
- Upgrade postcss version for autoprefixer to 8.5.3 in pnpm-lock.yaml.
- Add semver package with version 7.7.1 in package.json.
- Update CHANGELOG.md to reflect recent kkrpc upgrades and changes.
* fix: change icon in manifest
* refactor(ui): move BorderBeam component to ui package and update imports
* feat(ui): add new animation components and keyframes utility
* chore(deps): remove svelte-motion and related dependencies
* chore(deps): add svelte-motion and related dependencies
* fix(ui): eslint
* fix: extension store demo image display
* fix(ui): go to settings item in dropdown menu
* format
* refactor(desktop): move ext loading code in store from +page.ts to +page.svelte
try to solve blank screen on slow network
* Revert "refactor(desktop): move ext loading code in store from +page.ts to +page.svelte"
This reverts commit 4a0a695ce615cee695849c64746ba569680ff8c4.
* feat(desktop): add full-screen loading state and border beam animation
- Implement full-screen loading component with BorderBeam animation
- Add fullScreenLoading flag to appState store
- Update extension store pages to use full-screen loading
- Add border beam animation to Tailwind config
- Enhance page loading experience with visual feedback
* feat(desktop): add dance animation to loading screen and update imports
- Add Dance component to FullScreenLoading with subtle background effect
- Remove unused fade transition import from layout
- Update lz-string import in utils to use default import
- Clean up compress test imports
* feat(desktop): add back button to full-screen loading component
- Import ArrowLeftIcon and Constants from @kksh/ui
- Add back button with absolute positioning
- Remove "Go Home" text button
- Enhance loading screen with improved navigation
* refactor(desktop): update BorderBeam component to use Svelte 5 runes
- Add platform-specific icon path selection for Windows
- Enhance app command item rendering with dynamic icon resolution
- Modify icon loading to use applications-rs for Windows icon extraction
- Update Rust icon loading utility to provide more robust error handling
* clean path and exit after onSelect
* format
* do not clean linux app path, and clear search term
---------
Co-authored-by: Huakun Shen <huakun.shen@huakunshen.com>
* chore: comment out auto install for on boarding, its behavior and speed is unpredictable
* fix: clear action when ui template exits
* fix: update extension command search store references
* feat(ui): implement virtual list with advanced search and section handling
- Add @tanstack/svelte-virtual for efficient list rendering
- Integrate Fuse.js for advanced search across list items and sections
- Create dynamic virtual list with support for section headers
- Enhance list view with flexible search and filtering capabilities
- Add new types and components for virtual list management
* chore(desktop): bump package version to 0.1.29
* feat: add paste API to extension API
* feat(desktop): enhance clipboard and hotkey utilities
- Add `hideAndPaste` utility function to simplify window hiding and clipboard pasting
- Adjust key press and sleep timings for more reliable input simulation
- Implement window focus listener in clipboard extension
- Bind input element reference for automatic focus management
* feat(permissions): enhance clipboard permission handling
- Update clipboard permission schema to include paste permission
- Modify clipboard API to check for paste permission before executing
- Refactor permission map and schema for more flexible permission management
* feat(desktop): refactor extension command search and rendering
- Add `svelte-inspect-value` for debugging
- Implement new `ExtCmds` component to replace `ExtCmdsGroup`
- Enhance extension command search with separate Fuse.js instances for installed and dev extensions
- Simplify extension command filtering and rendering logic
- Add derived stores for extension commands with improved type safety
* feat(desktop): improve extension command search filtering
* bump @kksh/api version
* feat(permissions): add clipboard paste permission description
* upgrade tauri-plugin-shellx
* feat(shell): add killPid method to shell API with new permission
* fix: extension new window
* feat(shell): enhance process management and logging in extensions
- Add debug logging for extension process events
- Implement process tracking in UI worker
- Update shell API to support custom process recording
- Modify extension template to demonstrate process spawning
- Refactor shell command handling with improved error handling
* Add killPid extension API to @kksh/api
* chore(deps): update tauri-plugin-shellx-api to version 2.0.15
* pnpm lock
* chore(deps): update dependencies and lock file
- Upgrade ESLint to version 9.21.0
- Update @types/bun to version 1.2.3
- Bump various development dependencies
- Reorganize package.json dependencies in ui package
* chore(deps): update SvelteKit template dependencies
- Add @eslint/js version 9.21.0
- Update package.json dependency order
- Sync pnpm-lock.yaml with package.json changes
* chore: add eslint to desktop
* chore(deps): remove local tauri-plugin-shellx and use published version 2.0.15
* bump desktop to 0.1.28
* feat: add lockHideOnBlur to prevent app hiding during dialogs
* feat: add Fuse.js for advanced search filtering across app sections
* chore: update .prettierignore and clean up imports in AddDevExtForm
* fix(desktop): improve hotkey and paste functionality with refined key press timing
* fix(clipboard): streamline clipboard handling for macOS and add TODO for Windows/Linux support
* removed a comment
* fix(desktop): update version to 0.1.26 and enhance app execution handling for Linux
* fix(desktop): remove redundant app path display in AppsCmds component
* fix: change escape key behavior to navigate home instead of back
* feat: load custom ui extension with http server on Linux
Linux now uses the same loading approach as Windows due to a bug https://github.com/tauri-apps/tauri/issues/12767
* feat: add tauri-plugin-system-info-api dependency to deno.lock
* feat(shell): add hidden window style to PowerShell script execution
Modify PowerShell script execution to run with hidden window style in both TypeScript API and Rust plugin to prevent visible command windows
* feat(desktop): implement cross-platform paste functionality in clipboard extension
* feat(desktop): enhance hotkey functionality with registration and update methods
* fix(desktop): remove unnecessary border from command root styling
* feat(desktop): add cross-platform paste support for clipboard extension
- Import Tauri OS plugin to detect platform
- Implement platform-specific paste methods for macOS, Windows, and Linux
- Add error handling for unsupported platforms
- Center windows in Tauri configuration
* feat(desktop): extend global key handler to support Linux control key for settings navigation
* feat(desktop): add file system watch support for extensions
- Enable file system watching for package.json and test files
- Update Cargo.toml to include file system watch feature
- Add console logging for file system events
* feat(desktop): add extension auto reload mechanism for dev extensions
- Implement `reloadExtension` method in extensions store
- Add Tauri event for reloading a single extension
- Update UI worker to watch package.json and trigger extension reload
- Add Linux dependencies for building from source in CONTRIBUTING.md
* feat: add publisher link to extension detail
* fix: improve IconMultiplexer and StoreExtDetail component rendering
* feat: add published date to extension details view
* chore: add moment.js and clean up imports in StoreExtDetail
* fix: support cloudflare worker
Otherwise cloudflare worker gets html instead of json
* refactor: move AppsCmds component to desktop app
* bump: version to 0.1.1
* fix: package.json fetching cors error
* fix: improve files field validation in verify command
* feat: make dropdown width in main search input dynamic
* feat(ui): add install button for web extension store
* update submodules
* format
* feat(desktop): disable clipboard auto paste for windows and linux
They are not implemented yet, current code only works for mac
- Add writeToClipboard utility function to handle different clipboard content types
- Implement paste() method to simulate keyboard paste action
- Update onItemSelected to hide app and auto-paste selected clipboard item
- Add core:app:allow-app-hide capability to support app hiding
* chore: improve database and extension handling
- Remove debug console log in extension uninstall
- Add ON DELETE CASCADE to extension-related foreign keys
- Enable foreign key constraints in database connection
- Update database file extensions from .db to .sqlite
- Modify command value generation for better identification
* fix: add small delay to onboarding page navigation
Without delay the page switch won't be triggered when window first loads
* feat: add helper API for installation guides and update UI components
- Implement helperAPI with methods to navigate to installation guides for Deno, FFmpeg, and Homebrew
- Update extension and help page components to use new helper API
- Modify command filtering in builtin commands
- Adjust page navigation in help pages to use goHome instead of goBack
- Remove unused imports and clean up components
* chore: bump @kksh/api to 0.1.2 and update dependent packages
* feat: add publisher link to extension detail
* fix: improve IconMultiplexer and StoreExtDetail component rendering
* feat: add published date to extension details view
* chore: add moment.js and clean up imports in StoreExtDetail
* fix: support cloudflare worker
Otherwise cloudflare worker gets html instead of json
* refactor: move AppsCmds component to desktop app
* bump: version to 0.1.1
* fix: package.json fetching cors error
* fix: improve files field validation in verify command
* refactor(api): rename ui subpackage name
* refactor(api): update import paths for template UI schemas
* chore: update dependencies and bump package versions
* chore(api): bump package version to 0.1.1
* refactor(api): rename IUiIframe to IUiCustom and related types
* format
* feat: implement app loader (has performance problem)
* feat: enhance command filtering and search functionality
- Implement command score filtering for various command types
- Add filtered stores for quick links, system commands, and extensions
- Update command components to use new filtering mechanism
- Improve search experience by dynamically filtering results
- Refactor command value handling to use direct name matching
* refactor: rename WorkerExtension to TemplateUiCommand, HeadlessWorkerExtension to HeadlessCommand
* ci: update npm publish workflow to include refactor branch
* ci: add push trigger for JSR publish workflow and bump API package version
* ci: add pnpm setup to npm publish workflow
* chore: add repository field to package.json for @kksh/api
* fix: change action trigger hotkey on win and linux from control + k to alt + k
* chore: Update macOS build matrix to use macos-13 instead of macos-12
* feat: improve action panel, disable actions vimBindings
* fix: extension new window loading with localStorage
* fix: extension loading in new window
* upgrade: @kksh/svelte5
* refactor: update SideBar import to Sidebar across desktop app
* fix: safely remove test directories with existsSync check
* feat: add open preference command with platform-specific shortcut
* chore: clean up vite config trailing comma
* fix: iframe custom ext loading
* fix: fix template extension loading
* feat: add progress bar to extension form and list views
* feat: add optional description to form view template
* fix: extension new window loading with localStorage
* fix: extension loading in new window
* upgrade: @kksh/svelte5
* refactor: update SideBar import to Sidebar across desktop app
* fix: safely remove test directories with existsSync check
* feat: add open preference command with platform-specific shortcut
* chore: clean up vite config trailing comma
* fix: update email field in KunkunExtManifest to be optional and nullable
* refactor: update Supabase type generation command and enhance database types structure
- Changed the Supabase type generation command to include a specific project reference and output path.
- Refactored the database types in `database.types.ts` for improved readability and added new fields, including `extension_state` and `package_json` in the `ext_publish` table.
- Ensured consistent formatting across type definitions for better maintainability.
* feat: add optional README path to ExtPackageJson and enhance tests for README retrieval
* feat: add optional readmeContent to ExtensionPublishValidationData and retrieve README in validateJsrPackageAsKunkunExtension
* feat: add optional readme field to database types for improved package metadata
* feat: enhance StoreExtDetail to display package metadata including author and contributors
- Added packageJson prop to StoreExtDetail for improved extension metadata display.
- Implemented rendering of author and contributors from packageJson.
- Integrated README content display in StoreExtDetail if available.
- Updated +page.svelte to parse and provide packageJson data using valibot for validation.
* feat: enhance TauriLink component to support conditional rendering based on Tauri environment
- Added detection for Tauri environment using the browser variable.
- Updated the TauriLink component to render a button when in Tauri, and an anchor tag for external links otherwise.
- Improved user experience by ensuring appropriate link behavior based on the application context.
* feat: add unpacked size to npm registry
* feat: replace size in ext_publish table to tarball_size, add unpacked_size (only applicable to npm)
* feat: add pretty-bytes dependency and update debug package version
- Added `pretty-bytes` package with version 6.1.1 to `package.json`.
- Updated `debug` package to use `supports-color@9.4.0` in `pnpm-lock.yaml` for improved compatibility.
* feat: add tarball_size field to database types for improved package metadata
* feat: add readme fetching for npm registry, readme from github
* fix: remove console.log from NPM API test to clean up output
* style: update extension store details
* style: update README section in StoreExtDetail component for improved styling
* fix: update command input placeholder text in English, Russian, and Chinese translations for clarity
* chore: bump version to 0.1.18 in package.json
* fix: lint
* chore: add @inlang/paraglide-sveltekit to @kksh/ui
* feat: add i18n to desktop
* fix: add shrink-0 class to mode-toggle button for consistent styling
* feat: add i18n to settings, not working yet
* feat: i18 working
* feat: add i18n for about
* feat: migrate all goto to use i18n.resolveRoute
* feat: finish translating settings to chinese
* feat: add Chinese i18n for troubleshooters
* feat: add russian translation (by AI)
* format: run prettier
* format
* chore: update .prettierignore to exclude src/lib/paraglide/**
* feat: add required license field to manifest
* chore: add license MIT to all templates
* feat: add license check to jsr and npm validation
* fix: supabase export
split every item into its own subexport for better debugability
* fix: supabase imports
* feat: hide app when escape is pressed
* fix: update package version in api test from 0.0.6 to 0.0.20
* fix: update test for kunkun extension with new version and commit details
* fix: update kunkun extension test to use version 0.0.4
* fix: update kunkun extension test to reflect new version 0.0.20 and updated commit details
* feat: display downloads in extension details
* feat: add downloads display to store
* refactor: add a valibot schema for package registry validation
* fix: list view action menu
* chore: bump version to 0.1.16 in package.json
* refactor: extract supabase package from api
* ci: remove NODE_OPTIONS from build step and improve error handling in getLatestNpmPkgVersion function
* feat: npm package registry API
* refactor: move package registry files
* refactor: move jsr and npm api to a new package
* ci: add verify-package-export
* test: implement tests for npm package validation as kunkun extension
* chore: add missing dep for package-registry pkg
* feat: make provenance an optional input for npm validation function
* ci: add verify-package-export as dev dep to 2 packages that uses it
* feat: add rekor log API, and return commit from jsr & npm package in validation function
* feat: return github repo info from validation function of jsr and npm
* feat: extend ExtPublishMetadata to include optional GitHub repository details
* fix: eslint for ui package
* refactor: format desktop
* fix: eslint errors in desktop
* format: all code
* ci: add lint to CI
* feat: add more info to validation function returned from package-registry npm jsr
* pnpm lock
* feat: add 2 more variables to supabase extension metadata model
* format
* feat: add provenance card
* feat: add workflow path to ExtPublishMetadata and jsr/npm validation
* update provenance
* feat: make store extension and provenance more responsive
* chore: add globals to ui package
* fix: remove unnecessary any to fix eslint
* fix: svg sanitize
* chore: add @typescript-eslint/eslint-plugin to ui package to fix eslint
* fix: update eslint dep to fix error
* fix: try fixing eslint
* fix: update eslint configuration for improved compatibility
* chore: add globals package and update README for Discord invite
* fix: update eslint rules and upgrade typescript-eslint dependency
- Disabled additional eslint rules to resolve errors:
- @typescript-eslint/no-unused-expressions
- svelte/no-inner-declarations
- Upgraded typescript-eslint from version 8.19.1 to 8.20.0 for improved compatibility.
* update pnpm lock
---------
Co-authored-by: Huakun Shen <huaukun.shen@huakunshen.com>