* 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
* 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 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
* 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
* 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
* 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/**
- Adjusted Carousel.Item to use flexbox for better alignment of images.
- Removed unnecessary class attributes for cleaner markup.
- Ensured images maintain their aspect ratio with object-contain styling.
* 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>
* chore: upgrade many dependencies
* fix: @kksh/svelte, migrate 5
* refactor: move dialog plugin code out of ui package
* chore: disable check-types in api build.ts
Causing build error in kunkun-services
* feat: add jsr package
* feat: implement jsr package with API and parsers for jsr
* feat: modify API, add function to extract linked github repo from html
* perf: improve jsr package API with @hk/jsr-client
* feat: add jsr package version table for publishing extension
* fix: dependency and type incompatibility in ui package
* feat: add validateJsrPackageAsKunkunExtension function in jsr package
* feat: improve jsr table
* feat: add a ElementAlert component
* feat: update ElementAlert UI
* chore: update deno.lock
* chore: enable submodule support in jsr-publish workflow
* chore: bump version to 0.0.48 in jsr.json
* feat: regenerate supabase types, add author_id
* Move @kksh/jsr package to @kksh/api
* update deno.lock
* chore: change @tauri-plugin/plugin-upload version from git url to version
* feat: add rounded corner for ElementAlert
* chore: update deno.lock
* chore: bump version to 0.0.51 in jsr.json and update import paths for ExtPackageJson
* feat: add publishExtJSR API to SupabaseAPI
* refactor: replace "@hk/jsr-client" from jsr with @huakunshen/jsr-client from npm
* chore: update deno.lock
* feat: update validateJsrPackageAsKunkunExtension return type
* refactor: improve error message
* feat: add metadata to ext_publish, update database.types.ts
* feat: add models module for Supabase with ExtPublishMetadata and source type enumeration
* feat: support installing JSR package as extension
Since JSR overwrites package.json with its own code to be compatible with npm, causing manifest parsing to be impossible. I add metadata field to ext_publish.
When extension comes from jsr, kunkun app will fetch the original package.json from jsr and overwrite the one modified by jsr.
* fix: add missing dep @tauri-apps/plugin-upload to @kksh/extension
* chore: update version to 0.0.52 in version.ts
* 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
* 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
* 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
* perf: reduce desktop frontend bundle from 10 to 2MB
Use shiki fine-grained bundle, avoid bundling all languages and themes
* feat: add cross-page transition for ext store back button with gasp Flip
* refactor: move StoreListing.svelte in @kksh/ui back to desktop
I realized that StoreListing is a pure wrapper, all the interactions are done with props. Even if this component is later used in other projects, it either lacks flexibility or require more changes. So it's moved back to desktop as a regular +page.svelte
* feat: Add a bunch of builtin commands for app internal control
* feat: add system commands
* feat: add extensionsInstallDir var to +layout.ts, exposed to all pages
All pages won't need to get the path asynchronously, it's kind of like a global constant
* [feat] troubleshooters (#15)
* feat: add extension loading troubleshooter
* feat: add extension permission inspector
* feat: add extension window map troubleshooter (WIP)
* fix: unregister extension when window is closed
* Feature: Deep Link + Supabase OAuth + open extension in store with deep link (#16)
* feat(auth): add deep link and supabase auth
* fix(deep-link): fix some routing and reactive page rendering
* feat: implement supabase auth with pkce auth flow
* feat: add createTauriSyncStore factory function for creating sync svelte store
* Feature: Quick Link (#17)
* feat: add page for add quick link (not working yet)
* upgrade @kksh/svelte5
* fix: infinite recursive footer
* dep: add @kksh/svelte5 to ui package
* dep: add supabase-js
* dep: add @iconify/svelte
* style: modify StoreExtDetail width control
* fixed: UI for extension store detail
* feat: add page to create quick link
* feat: display quick links in cmd palette
* snapshot
* show queries in command input
* feat: quick link fully implemented
* refactor: format all with prettier
* feat: add icon picker for quick link adder
* fix: make invert for icon optional, caused many types to crash
* [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
* perf: reduce desktop frontend bundle from 10 to 2MB
Use shiki fine-grained bundle, avoid bundling all languages and themes
* feat: add cross-page transition for ext store back button with gasp Flip
* refactor: move StoreListing.svelte in @kksh/ui back to desktop
I realized that StoreListing is a pure wrapper, all the interactions are done with props. Even if this component is later used in other projects, it either lacks flexibility or require more changes. So it's moved back to desktop as a regular +page.svelte