mirror of
https://github.com/spacedriveapp/spacedrive.git
synced 2025-12-11 20:15:30 +01:00
chore: update .dockerignore to streamline build artifacts, add new submodules for apps, and enhance ESLint configuration in UI package
This commit is contained in:
parent
3c758b9984
commit
eabd8ef365
@ -1,73 +1,14 @@
|
||||
# Build artifacts
|
||||
target/
|
||||
**/target/
|
||||
dist/
|
||||
**/dist/
|
||||
|
||||
# Node modules and frontend
|
||||
node_modules/
|
||||
**/node_modules/
|
||||
.pnpm-store/
|
||||
apps/desktop/
|
||||
apps/mobile/
|
||||
apps/landing/
|
||||
apps/macos/
|
||||
apps/ios/
|
||||
packages/
|
||||
|
||||
# Git
|
||||
.git/
|
||||
.gitignore
|
||||
.gitattributes
|
||||
|
||||
# IDE
|
||||
.vscode/
|
||||
.idea/
|
||||
*.swp
|
||||
*.swo
|
||||
*~
|
||||
.DS_Store
|
||||
|
||||
# Documentation (not needed for build)
|
||||
docs/
|
||||
*.md
|
||||
!Cargo.toml
|
||||
!Cargo.lock
|
||||
|
||||
# CI/CD
|
||||
.github/
|
||||
.gitlab-ci.yml
|
||||
|
||||
# Testing
|
||||
**/tests/
|
||||
**/*_test.rs
|
||||
**/*_bench.rs
|
||||
|
||||
# macOS/Windows specific
|
||||
*.dylib
|
||||
*.dll
|
||||
*.exe
|
||||
*.app
|
||||
*.dmg
|
||||
*.msi
|
||||
|
||||
# Environment and secrets
|
||||
.env
|
||||
.env.*
|
||||
*.key
|
||||
*.pem
|
||||
|
||||
# Logs
|
||||
# Ignore build artifacts but keep source
|
||||
.git
|
||||
**/.next
|
||||
**/dist
|
||||
**/build
|
||||
target
|
||||
*.log
|
||||
logs/
|
||||
|
||||
# Temporary files
|
||||
tmp/
|
||||
temp/
|
||||
*.tmp
|
||||
|
||||
# Workbench (development notes)
|
||||
workbench/
|
||||
|
||||
# Release artifacts
|
||||
releases/
|
||||
# But keep these
|
||||
!packages
|
||||
!apps
|
||||
!pnpm-lock.yaml
|
||||
!pnpm-workspace.yaml
|
||||
!package.json
|
||||
|
||||
6
.gitmodules
vendored
6
.gitmodules
vendored
@ -10,3 +10,9 @@
|
||||
[submodule "docs"]
|
||||
path = docs
|
||||
url = https://github.com/spacedriveapp/docs.git
|
||||
[submodule "apps/landing"]
|
||||
path = apps/landing
|
||||
url = https://github.com/spacedriveapp/landing.git
|
||||
[submodule "apps/api"]
|
||||
path = apps/api
|
||||
url = https://github.com/spacedriveapp/api.git
|
||||
|
||||
@ -6,17 +6,30 @@ assignee: james
|
||||
priority: High
|
||||
tags: [epic, plugins, wasm, extensibility, extensions]
|
||||
whitepaper: Section 6.7
|
||||
last_updated: 2025-10-14
|
||||
last_updated: 2025-11-05
|
||||
---
|
||||
|
||||
## Description
|
||||
|
||||
This epic covers the implementation of the WebAssembly (WASM) based extension system. This allows third-party developers to extend Spacedrive's functionality in a secure and sandboxed environment, turning it into a true platform.
|
||||
This epic covers the implementation of the WebAssembly (WASM) based extension system. Extensions can define custom data models, create AI agents, and integrate seamlessly with Spacedrive's sync, search, and action systems.
|
||||
|
||||
**Architecture Clarification (Nov 5, 2025):** Extensions get BOTH:
|
||||
- Their own database tables for domain models (managed by core, auto-sync)
|
||||
- Location declarations (user chooses where extension files go)
|
||||
- Files written to locations are automatically indexed by core VDFS
|
||||
- Query via core entries table with sidecar filters (no custom query caches)
|
||||
|
||||
## Current Status
|
||||
|
||||
**Infrastructure:** Core WASM runtime is integrated and compiling. Extension SDK with beautiful `#[extension]` and `#[job]` macros is functional. Test extensions exist and compile to WASM.
|
||||
**Infrastructure:** Core WASM runtime is integrated and compiling. Extension SDK with `#[extension]` and `#[job]` macros is functional. Test extensions exist and compile to WASM.
|
||||
|
||||
**In Progress:** WASM memory interaction helpers, complete host function bridge, and production extensions (Photos, Finance, Email).
|
||||
**In Progress:**
|
||||
- Location declaration and management system
|
||||
- Core VDFS query API for extensions (sidecar filters)
|
||||
- Complete host function bridge
|
||||
- Production extensions (Photos, Ledger, Email Archive)
|
||||
|
||||
**Reference:** See `core/src/infra/extension/README.md` and `extensions/README.md` for implementation details.
|
||||
**Reference:**
|
||||
- `core/src/infra/extension/README.md` - Implementation details
|
||||
- `workbench/sdk/EXTENSION_SDK_SPECIFICATION_V2.md` - Complete SDK spec
|
||||
- `workbench/core/extensions/EXTENSION_DATA_STORAGE_PHILOSOPHY.md` - Storage model
|
||||
|
||||
1
apps/api
Submodule
1
apps/api
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit bcc967136a6bba9812cabbdecdd058e45ec5f16f
|
||||
1
apps/landing
Submodule
1
apps/landing
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 3ddfe00970bb6d58bd935030aad32a4de46dd62e
|
||||
@ -1,7 +1,86 @@
|
||||
const path = require('node:path');
|
||||
|
||||
module.exports = {
|
||||
extends: [require.resolve('@sd/config/eslint/web.js')],
|
||||
parser: '@typescript-eslint/parser',
|
||||
parserOptions: {
|
||||
ecmaFeatures: {
|
||||
jsx: true
|
||||
},
|
||||
ecmaVersion: 12,
|
||||
sourceType: 'module',
|
||||
tsconfigRootDir: __dirname,
|
||||
project: './tsconfig.json'
|
||||
},
|
||||
plugins: ['react'],
|
||||
extends: [
|
||||
'eslint:recommended',
|
||||
'plugin:@typescript-eslint/recommended',
|
||||
'plugin:react/recommended',
|
||||
'plugin:react-hooks/recommended',
|
||||
'plugin:tailwindcss/recommended',
|
||||
'turbo',
|
||||
'prettier'
|
||||
],
|
||||
env: {
|
||||
browser: true,
|
||||
node: true
|
||||
},
|
||||
rules: {
|
||||
// TypeScript
|
||||
'@typescript-eslint/no-unused-vars': 'off',
|
||||
'@typescript-eslint/ban-ts-comment': 'off',
|
||||
'@typescript-eslint/no-explicit-any': 'off',
|
||||
'@typescript-eslint/no-var-requires': 'off',
|
||||
'@typescript-eslint/no-non-null-assertion': 'off',
|
||||
'@typescript-eslint/explicit-module-boundary-types': 'off',
|
||||
'@typescript-eslint/no-empty-interface': 'off',
|
||||
'@typescript-eslint/no-empty-function': 'off',
|
||||
'@typescript-eslint/ban-types': 'off',
|
||||
// React
|
||||
'react/display-name': 'off',
|
||||
'react/prop-types': 'off',
|
||||
'react/no-unescaped-entities': 'off',
|
||||
'react/react-in-jsx-scope': 'off',
|
||||
'react-hooks/rules-of-hooks': 'warn',
|
||||
'react-hooks/exhaustive-deps': 'warn',
|
||||
// Tailwind
|
||||
'tailwindcss/no-custom-classname': 'off',
|
||||
'tailwindcss/classnames-order': [
|
||||
'warn',
|
||||
{
|
||||
config: path.resolve(path.join(__dirname, './tailwind.config.js'))
|
||||
}
|
||||
],
|
||||
// General
|
||||
'no-control-regex': 'off',
|
||||
'no-mixed-spaces-and-tabs': ['warn', 'smart-tabs'],
|
||||
'turbo/no-undeclared-env-vars': [
|
||||
'error',
|
||||
{
|
||||
cwd: path.resolve(path.join(__dirname, '..', '..'))
|
||||
}
|
||||
],
|
||||
// Custom routing rules
|
||||
'no-restricted-syntax': [
|
||||
'error',
|
||||
{
|
||||
selector: "CallExpression[callee.name='useParams']",
|
||||
message: 'useParams is illegal, use useZodRouteParams!'
|
||||
},
|
||||
{
|
||||
selector: "CallExpression[callee.name='useSearchParams']",
|
||||
message: 'useSearchParams is illegal, use useZodSearchParams!'
|
||||
}
|
||||
]
|
||||
},
|
||||
settings: {
|
||||
react: {
|
||||
version: 'detect'
|
||||
},
|
||||
tailwindcss: {
|
||||
callees: ['classnames', 'clsx', 'ctl', 'cva', 'tw', 'twStyle'],
|
||||
tags: ['tw', 'twStyle']
|
||||
}
|
||||
},
|
||||
ignorePatterns: ['dist', '**/*.js', '**/*.json', 'node_modules', 'public', 'vite.config.ts']
|
||||
};
|
||||
|
||||
@ -50,7 +50,6 @@
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.24.0",
|
||||
"@headlessui/tailwindcss": "^0.2.0",
|
||||
"@sd/config": "workspace:*",
|
||||
"@storybook/types": "^8.0.1",
|
||||
"@tailwindcss/forms": "^0.5.7",
|
||||
"@tailwindcss/typography": "^0.5.10",
|
||||
|
||||
16331
pnpm-lock.yaml
generated
16331
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user