* Update drizzle-orm to version 0.41.0 and implement clipboard cleanup functionality
- Updated drizzle-orm dependency in package.json and pnpm-lock.yaml to version 0.41.0.
- Added a new utility function `cleanClipboard` to remove clipboard entries older than 10 days.
- Integrated clipboard cleanup into the initialization process, logging success or failure.
- Refactored drizzle exports to include `proxyDB` for better access to the database proxy.
- Minor cleanup in the proxy.ts file to remove commented-out debug logs.
* Refactor clipboard cleanup logic to use configurable days parameter
- Introduced a variable `nDays` to allow dynamic adjustment of the clipboard cleanup threshold.
- Updated logging to reflect the configurable number of days for clipboard entry deletion instead of a hardcoded value.
* Enhance clipboard and database management in initialization process
- Added logging to `cleanClipboard` to indicate the number of clipboard entries older than a specified number of days.
- Introduced a new utility function `vacuumSqlite` for database maintenance, which is now called during app initialization.
- Updated the `init` function to await the completion of `cleanClipboard` and `vacuumSqlite` for better error handling and flow control.
- Ensured that the console attachment in `onMount` is awaited for proper synchronization.
* Update version in package.json from 0.1.37-beta.1 to 0.1.37
* Adds C11 standard flag for builds
Try to fix windows build beta CI
Adds the C11 standard flag to the build environment. This ensures
that the code is compiled using the C11 standard, potentially
improving compatibility and avoiding compiler-specific behavior.
* Remove CFLAGS for C11 standard from beta build workflow
This change eliminates the CFLAGS environment variable previously set for C11 standard compliance in the beta build process, streamlining the build configuration.
* 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
* 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
* 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
- 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
* crosslink issue on linux, and cleanup entire dir
* moved copy_dir_all to rust
* using dircpy instead of diy due to complications
* refactor: move copy_dir_all to jarvis plugin
All commands are in jarvis plugin, this is more organized.
And this API will be exposed to extensions.
---------
Co-authored-by: Huakun Shen <huakun.shen@huakunshen.com>
* 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
* 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 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
* 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: 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
* fix: try to fix desktop app publish
* chore: update beta-build workflow for Ubuntu by removing redundant protobuf installation and adding libxdo-dev
* fix: ensure data directory creation is conditional to avoid errors
- Updated setup.ts to check for the existence of the "./src/data" directory before attempting to create it, preventing potential errors during execution.
* fix: lint error
* 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: add deno install page
* feat: add deno install onboarding page
* feat: add ffmpeg, deno, brew install help page
* feat: improve on boarding page with deno install, setting, ffmpeg install
* refactor: update app configuration and onboarding flow
- Improved the onboarding page layout by adding a draggable region.
- Introduced a new writable store `appConfigLoaded` to track the loading status of app configuration.
- Updated the main application page to subscribe to `appConfigLoaded` for better handling of onboarding logic.
- Minor formatting changes in the ffmpeg installation help page for consistency.
* chore: add check-types
* refactor: api package file structure update
* feat: add headless worker extension API
* feat: add HeadlessCmd to manifest schema
* feat: make each type of cmds optional in manifest
There may be more types of cmds in the future, this makes backward compatibility easier.
* feat: implement headless extension command in app
A demo cmd implemented as well.
* refactor: move api package's API server files
* refactor: reformat all
* chore: add tauri-plugin-user-input submodule
* feat: add key display extension
There is delay, affecting key combination from being detected. I guess it's due to rdev grab, I have to remove grab and use listen directly.
* chore: upgrade tauri-plugin-user-input submodule
The user-input plugin improves mac's listen feature
* chore: upgrade user-input submodule
* fix: a platform-specific window command
* ci: add libxdo-dev dep for ubuntu
* chore: update tauri-plugin-user-input submodule to latest commit 5766c04
* feat: add keyring plugin to handle DB encryption
* feat: integrate stronghold plugin
* feat: use new get_or_set APIs added to keyring plugin
* chore: update keyring submodule
* feat: add stronghold integration
Stronghold loading is too slow for now, waiting for a fix https://github.com/tauri-apps/plugins-workspace/issues/2048
* feat: implement clipboard history preview
* feat: clipboard history pagination
* refactor: format code
* fix: sql schema
* feat: add json metadata to unit test
* upgrade: js dependencies
* upgrade: desktop rust dependencies
* fix: clipboard history duplicate key bug when searchTerm clears
* upgrade: tauri-plugin-network submodule solve pnpm lock file
* fix: grpc package CI
* chore: update turbo.json outputs to include dist and build directories
* fix: try to fix template-ext-vue tailwind module.export
* ci: prevent error when protoc is not installed in CF pages
* fix: update writeFile function to accept ReadableStream as data type
* feat: implement a file streamer for file share
Only server with hardcoded file path
* bump valibot version
* feat: add server-info gRPC module to serve server info
* feat: add ssl cert and public key to peers state
When peer is online, KK always have know its cert and pub key for future secure communication
* feat: add grpc ts package
* Enable "/refresh-worker-extension" rest API, grpc version isn't ready yet
* update pnpm lock
* ci: fix CI by moving protobuf install order
* ci: fix
* upgrade api due to valibot incompatibility
* fix: use fs instead of bun shell to be compatible with windows
* skip grpc pkg build on windows
* feat: local network file transfer prototype working
* fix: grpc build.ts
* download next to 14
* ci: add ci env try to fix next
* fix: hideRefreshBtn and a few other btns' hide API in iframe ext page
* feat: disable NODE_TLS_REJECT_UNAUTHORIZED for extension HMR refresh
* fix: manifest json schema with objectWithRest to allow any other fields in package.json
* chore: update valibot and related dependencies to version 1.0.0-beta.9 in pnpm-lock.yaml
* ci: add protobuf compiler installation to manifest-schema-upload workflow
* refactor: move grpc code from jarvis to a separate grpc crate
for easier testing
* feat(file-transfer): POC multi file + directory file transfer
* feat(file-transfer): replace file transfer recursive download in ts with rust
* feat(file-transfer): implement on_progress event for file transfer
* feat(file-transfer): report progress every 1MB instead of 100 iterations
* feat(file-transfer): add progress bar
* feat(file-transfer): UI
* feat(file-transfer): add file transfer bucket info preview
Show total size and number of files
* feat(file-transfer): improve UX
Show bucket info during confirm; improve progress bar UI, prevent inconsistent width
* feat(grpc): skip build in Cloudflare Pages due to missing protoc
* refactor: with cargo fix, unused imports removed
* ci: debug cloudflare pages env var
* fix(grpc): update environment variable access for Cloudflare Pages build check
* fix(grpc): add error handling for protoc command in build script
* chore: update kkrpc version to 0.0.13, remove kkrpc submodule, and enhance grpc build script logging
- Updated kkrpc dependency version from 0.0.12 to 0.0.13 in package.json.
- Removed the kkrpc submodule from the project.
- Enhanced logging in the grpc build script to include additional Cloudflare Pages environment variables for better debugging.
* fix(api): typescript error, remove base.json from tsconfig
* chore: update pnpm lock
* fix(api): update TypeScript configuration to extend base.json and clean up unused options
* refactor(api): update TypeScript configuration to extend path-alias.json and enhance compiler options
* fix(api): restore KunkunManifestPermission in PermissionUnion and update valibot import in schema tests
* fix: missing trait error
* fix: js require replaced with import
* test: fix a unit test with a more robust method
---------
Co-authored-by: Huakun Shen <huaukun.shen@huakunshen.com>
* Add some experiment code for crypto crate
* feat: add crypto crate with ssl, rsa, ed25519 for https, encryption, signing
* Implement aes encryption helper in crypto crate
* ci: add dep for CI rust test (protobuf)
* fix: try to fix window CI with next
* fix: CI
* ci: add dep for ubuntu
* ci: fix
* fix: openssl lib path in CI
* fix: CI
* update applications-rs, disable some tests
* fix: CI
* feat: add file transfer grpc proto and server setup
* CI: try to fix CI
* fix: missing proto in build.rs
* ci: add cargo build before cargo test
* fix: grpc file descriptor
* ci: fix CI by removing a redundant main.rs
* fix: disable local windows test in applications-rs which fails CI
* ci: run CI rust test only on ubuntu, windows is failing. will be handled in another PR
* fix: vue template
* fix: allow unused variable
* fix: remove node:buffer type from api shell.ts to avoid frontend build error
* try to fix test in create-kunkun
* upgrade api to 0.0.44, remove node:buffer
* upgrade next template to 15
* feat: turn the default server into a https server
* feat: make SSL certificate loadable from env
* feat: add conditional SSL cert
in debug mode, use local default cert, in production generate new self-signed cert every time app starts
* chore: add vscode debug config
* feat: add server public key
* feat: setup sqlite db encryption
* fix: settings hotkey
* chore: add .gitkeep
* ci: add node-fetch to dep for api package
* refactor: replace comlink with kkrpc
* fix: import path in api pkg and btn styling in ui iframe page
* fix: fixed fetch API from kkRPC migrate
* refactor: replace comlink-stdio with kkrpc
* update deno lock
* bump @kksh/api
* update API version
* publish api pkg again to fix kkrpc version
* update pnpm lock
* dep: fix dependency problems
* dep: update deno.lock
* chore: remove 2 submodules
they were added only for integration development
* update pnpm lock
* fix: test template path
* format: with prettier
* downgrade next version
* ci: try to fix next build on windows
* try to fix CI
* Revert "try to fix CI"
This reverts commit b9c63c392f50f1d2d3ceec406e49b1af2348c740.
* upgrade tauri-api-adapter
* try to fix next
* remove templates from pnpm workspace
* update CI test
* publish @kksh/api with upgraded tauri-api-adapter to fix nextjs template
* chore: add vendor submodules
* feat: add packages for db,ci,schema,api,jarvis cmds
* feat: add tauri-jarvis-plugin
* feat: implement extension commands list
* fix(desktop): import path errors after packages refactor
* chore: add self signed cert
* fix: prevent prerender for desktop
* fix(desktop): desktop sveltekit static build, use csr for dynamic route
* feat: add error handling page and components
* refactor: component lib
* refactor: move more types, functions and components out of desktop
* refactor(ui): more refactor
* refactor(ui): move store components to @kksh/ui
* ci: add CI for build & test
* refactor: rename @kksh/extensions to @kksh/extension
* ci: add 2 more ci
* ci: fix
* fix: CI env var
* chore: add changeset
* feat: implement extension store item detail view
* feat: implement extension store install, uninstall, upgrade
* format
* revert: upgradable logic, the new one doesn't work yet
* refactor: make @kksh/ui dependent only on @kksh/api
Reason: @kksh/ui may be published later for building website, all its dependency packages must be also published. To avoid trouble it should be standalone, depend only on packages already published
* refactor: cleanup
* fixed: some typescript error
* chore: got typedoc working on @kksh/api
* ci: disable manifest schema upload CI on push