Initial commit: LinkSyncServer and LinkSyncExtension projects with complete documentation, models, API endpoints, tests, and extension implementation

This commit is contained in:
DavidSaylor
2026-05-11 17:37:10 -05:00
parent ad0b12b452
commit aed69afdfd
691 changed files with 181874 additions and 28 deletions

View File

@@ -0,0 +1,70 @@
# AGENTS.md - Project Guidance for Coding Agents
## Project Overview
LinkdingSync is a Firefox browser extension that synchronizes bookmarks with a self-hosted Linkding instance. It provides bi-directional sync, folder structure preservation, and optional auto-tag generation.
## Setup & Build Commands
```bash
# Install project dependencies
npm install
# Start development server
npm run dev
# Run unit tests
npm test
# Run linting
npm run lint
# Build production bundle
npm run build
```
## Architecture Notes
- **Extension Manifest**: `manifest.json` - Firefox extension configuration
- **Popup UI**: `popup.html` + `popup.css` + `popup.js` - User interface
- **Background Service**: `background.js` - Service worker for sync logic
- **Utils**: `utils/` folder - Bookmark manipulation, sync logic, conflict resolution
- **API Integration**: Uses Linkding REST API for bookmark operations
## Testing
- **Unit tests**: `npm test` - Test individual utility functions
- **E2E tests**: `npx playwright test` - Browser automation tests (if Playwright configured)
- **Coverage target**: 80%
- **Browser tests**: Use Playwright to simulate user interactions
## Conventions
- **File naming**: PascalCase for components, kebab-case for CSS classes
- **Error handling**: Try/catch with async/await, error boundaries
- **API patterns**: Restful endpoints with token-based authentication
- **Do not modify**: `manifest.json` requires Firefox extension signing (unless in development mode)
- **Secrets**: API tokens stored in browser storage (client-side only)
## Session Logging
- **Auto-saved to**: `@LinkdingSync\chatlog.md`
- **Review via**: File explorer (not IDE working set)
- **Archived to**: `../docs\session-YYYYMMDD.md`
## Known Issues
- Firefox extension requires signing for distribution (not in dev mode)
- API token storage is client-side only (user must protect token)
- Browser compatibility limited to Firefox (extension format)
## Project Tools
- **OpenCode**: Main agent for iterative test development
- **Playwright**: For browser automation and E2E testing
- **API Endpoint**: `https://api.links.blabber1565.com` (example - adjust as needed)
## Notes Structure Example
Bookmarks in Linkding use this notes format:
```json
{
"path": "Work/Resources/Development",
"userNotes": "Development resources folder",
"autoTags": [
{"name": "Work"},
{"name": "Resources"},
{"name": "Development"}
]
}