34 Commits

Author SHA1 Message Date
Huakun
bb9a46935c
Feature: add drizzle (#264)
* 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
2025-04-01 06:15:10 -04:00
Huakun
9cf06b1835
Feature: custom transition animation (#266)
* 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.
2025-03-28 07:45:25 -04:00
Huakun
0bca6739a7
[feat] New sysinfo api, update dep (#251)
* update tauri-plugin-system-info submodule to latest commit cb32fe8

* Update dependencies to latest versions, including valibot to 1.0.0-rc.4 and kkrpc to 0.2.1 across multiple packages. Bump api package version to 0.1.6.

* Update desktop and API package versions; change development server port and URL
2025-03-18 08:42:39 -04:00
Huakun
cd7301255b
perf: remove deno and ffmpeg instruction from onboard; use tauri-plugin-svelte store (#245) 2025-03-13 21:06:33 -04:00
Huakun
2cbe45f6d1
feat(desktop): improve app icon handling for cross-platform support (#230)
- 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
2025-03-03 05:22:08 -05:00
Huakun
a92c266d32
Feature: fine grain kill API for extension (#201)
* 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
2025-02-26 02:06:06 -05:00
Huakun
52919b8d2f
fix(desktop): set macOS accessory activation policy to Accessory (#189) 2025-02-22 05:14:04 -05:00
Luca Giannini
872b601338
crosslink issue on linux, and cleanup entire dir (#177)
* 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>
2025-02-22 02:58:41 -05:00
Huakun
a0bd2d8573
Feature: enable clipboard paste for windows and linux (#185)
* 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
2025-02-22 00:41:35 -05:00
Luca Giannini
ec951bfc80
add toggle cli command to show/hide kunkun (#176)
* add toggle cli command

* cleaner

* keep unused imports
2025-02-21 06:28:08 -05:00
Huakun
4d90e2cf29
Feature: watch manifest and reload for dev extension (#181)
* 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
2025-02-21 05:59:25 -05:00
Huakun
07c62e236c
feat(desktop): enhance clipboard extension with auto-paste functionality (#171)
- 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
2025-02-20 04:02:50 -05:00
Huakun Shen
b986121708
feat(desktop): improve app config loading,
Merge loaded config with default config
2025-02-19 08:58:29 -05:00
Huakun
ba36b6226a
feat(desktop): expand file system access permissions to all paths, to be able to read from other drives (#138) 2025-02-18 03:56:48 -05:00
Huakun Shen
71b88e0a22
feat(desktop): add autostart (#137)
* feat(desktop): add Tauri autostart plugin and update launch at login settings

* chore(ci): update beta build workflow defaults and matrix generation
2025-02-17 21:51:44 -05:00
Huakun Shen
513cf16d72
Improve CI (enable beta build for all PR) (#134)
* chore(desktop): configure publish workflow and update Tauri configuration

* chore(ci): enable beta build on develop pull requests

* chore(ci): add develop branch to CI workflow triggers

* chore(ci): enable default platform builds for beta workflow
2025-02-17 19:10:09 -05:00
Huakun Shen
bbee92fa9f
chore(desktop): set minimum macOS system version to 10.15 (#125) 2025-02-16 04:18:51 -05:00
Huakun Shen
bdf99ee196
perf(splashscreen): make splashscreen prerenderred, slightly faster (#98) 2025-02-11 08:29:47 -05:00
Huakun Shen
d73ae6542c
feat: hide main window when close requested (#59)
* feat: hide main window when close requested

* fix: jsr test

* fix: fix nuxt tailwind version, the latest verison has bug

* update pnpm lock
2025-01-13 18:33:31 -05:00
Huakun Shen
41d9c72277
[feat] key display (#40)
* 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
2025-01-04 22:31:20 -05:00
Huakun Shen
6995e0b8d9
feat: integrate keyring and stronghold plugin (#39)
* 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
2025-01-04 13:00:16 -05:00
Huakun Shen
caa252b4dd
feature: splashscreen (#36)
* feat: move all pages to app folder, add splashscreen

* feat: use Dance as splashscreen

* feat: add zoom in for splashscreen logo

* refactor: move svelte files into app folder

* fix: url prefix with /app

* refactor: remove platform-specific tauri conf

Merge windows back to main tauri config. The reason I separated them was
because I need decoration: true on mac and false on windows and linux.
Now I use tauri rust API to set decorations to false for win and linux.
2024-12-21 04:04:05 -05:00
Huakun Shen
80ad705f7c
Feature: clipboard history extension (#35)
* 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
2024-12-19 09:31:56 -05:00
Huakun Shen
99b940b03b
File Transfer (Local Network) (#34)
* 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>
2024-12-11 08:14:40 -05:00
Huakun Shen
da8e37c4a1
Security with cryptography (#32)
* 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
2024-11-24 00:45:36 -05:00
Huakun Shen
e9609cf8ee
Update Extension API (#25)
* feat: add file drop API to ui worker extension

* update: some shell API
2024-11-15 17:39:01 -05:00
Huakun Shen
fb0e5761c9
style: UI style updates 2024-11-12 14:06:44 -05:00
Huakun Shen
292d03a51e style: disable window decoration and fixed a flex box issue from unocss 2024-11-12 12:48:03 -05:00
Huakun Shen
c7003326db
fix: implemented file server for custom UI commands on Windows (#24) 2024-11-12 12:25:24 -05:00
Huakun Shen
7865d18580
Feature: Settings (#23)
* feat: add pin screenshot builtin command

* feat: pin screenshot command nows zoom and scroll

* chore: upgrade @kksh/svelte5

* feat: add mdns built-in command

* feat: add sidebar for settings page

* fix: builtin command command listing problem with key id in "each" loop

* feat: add settings

* style: modify settings sidebar style

* feat: add sidebar to troubleshooter pages

* fix: some styling bug

* feat: add menu item highlight for sidebar

* feat: improve some keyboard interaction logic

* fix: improve troubleshooter flex box

* feat: add uuid for mdns

* fix mdns host removing caused by dead lock

* feat: settings page implemented, hotkey, hide on blur implemented

* style: update styles in settings

* feat: improve search bar dropdown menu items
2024-11-11 17:15:42 -05:00
Huakun Shen
0600eca59a
Feature: Pin Screenshot (#22)
* feat: add pin screenshot builtin command

* feat: pin screenshot command nows zoom and scroll
2024-11-10 09:12:33 -05:00
Huakun Shen
4a05c5a475
[Feature] Implement UI template worker command (#20)
* feat: add ui worker command loading code (not working yet)

* feat: add unocss

* feat: add-dev-extension page

* feat: implemented list view template

* feat: implement list view detail view width, add demo extension for dev

* fix: resize listview, add metadata component

* fix: metadata tag component  background color

* feat: implement boolean (checkbox), date fields for form template

* feat: support default, optional, placeholder for form fields

* feat: implemented form view Select Field

* feat: markdown view

* feat: fixed a markdown schema type error

* fix: markdown styling

* feat: implement action panel for UI worker template list view

* format: format all

* chore: bump desktop version

* fix: fix search term bind in list view
2024-11-08 15:12:20 -05:00
Huakun Shen
ed87fc6c12
App Setup (#2)
* 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
2024-11-03 13:54:44 -05:00
Huakun Shen
8ed36a22db
init project with tauri, turborepo and sveltekit 2024-10-24 07:01:00 -04:00