mirror of
https://github.com/spacedriveapp/spacedrive.git
synced 2026-05-08 07:13:21 -04: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:
@@ -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
Submodule apps/api added at bcc967136a
1
apps/landing
Submodule
1
apps/landing
Submodule
Submodule apps/landing added at 3ddfe00970
@@ -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",
|
||||
|
||||
BIN
pnpm-lock.yaml
generated
BIN
pnpm-lock.yaml
generated
Binary file not shown.
Reference in New Issue
Block a user