Commit graph

394 commits

Author SHA1 Message Date
Marko Djordjevic
4dad24845e chore: archive update-candle-colors change 2026-02-12 23:26:25 +01:00
Marko Djordjevic
cce55c63c1 docs: sync candlestick color spec from update-candle-colors change 2026-02-12 23:26:10 +01:00
Marko Djordjevic
48883e60f0 feat: update candlestick colors to black/white scheme
- Change bullish candles to white interior with black outline
- Change bearish candles to solid black
- Update all wick colors to black
- Enable borders for candlesticks
2026-02-12 23:23:17 +01:00
Marko Djordjevic
62e0c554df use github actions again 2026-02-12 20:23:13 +01:00
Marko Djordjevic
8330566080 docs: update README with CSV replace mode and initial data loading 2026-02-12 18:49:16 +01:00
Marko Djordjevic
6522f501b6 feat: add EURUSD.csv data loading on Docker startup 2026-02-12 18:48:54 +01:00
Marko Djordjevic
011bea2350 feat: delete old candles on CSV upload before inserting new ones 2026-02-12 18:47:11 +01:00
Marko Djordjevic
974d9f5598 feat: add annotation types management system
- Created annotation_types table with name, display_name, color, category, icon
- Implemented CRUD API endpoints for annotation types management
- Built annotation types management UI page at /annotation-types
- Updated Toolbox component to dynamically load and display annotation types
- Updated CandleChart component to use dynamic annotation types for markers
- Added seed functionality for default types (break_up, break_down, line)
- Cleaned up duplicate migration files
2026-02-12 18:17:44 +01:00
Marko Djordjevic
50229e2ccf chore: archive both OpenSpec changes and sync specs to main 2026-02-12 18:17:44 +01:00
exe.dev user
a6e763c153 Switch deploy to webhook-based approach
exe.dev SSH proxy blocks direct SSH from GitHub Actions.
Use webhook listener on port 9000 instead.

Co-authored-by: Shelley <shelley@exe.dev>
2026-02-12 15:22:30 +00:00
Marko Djordjevic
133a0ce50f fix: remove obsolete version attribute from docker-compose.yml 2026-02-12 16:18:14 +01:00
Marko Djordjevic
08e8ebd1e0 design: change to minimalistic and clean light theme
- Replace Matrix/terminal dark theme with modern light design
- Update Tailwind config with clean, professional color palette
- Change from monospace to Inter sans-serif font
- Update chart styling to use white background with subtle grids
- Remove glow effects and neon colors from buttons and UI
- Update color picker with better color options
- Improve sidebar spacing and typography
- Update annotation badges with softer colors
- Change scrollbar styling to match light theme
2026-02-12 16:18:14 +01:00
exe.dev user
42bc3ae757 Add GitHub Actions deploy workflow
Automatically deploys to exe.dev VM on push to master.
Uses SSH to pull latest code and rebuild Docker container.

Co-authored-by: Shelley <shelley@exe.dev>
2026-02-12 15:04:06 +00:00
exe.dev user
e7af29145b Add drizzle migration files and remove drizzle/ from .gitignore
The Docker build was failing because drizzle/ was in .gitignore,
so migration files (meta/_journal.json) were never committed.
Generated initial migration from schema.

Co-authored-by: Shelley <shelley@exe.dev>
2026-02-12 14:47:06 +00:00
Marko Djordjevic
6f965c1cc9 fix: add automatic database migrations on startup and copy drizzle folder to Docker
- Auto-run migrations when db module loads
- Copy drizzle migrations folder to Docker image
- Generate missing color column migration
- Fixes 500 errors on /api/candles and /api/annotations in Docker
2026-02-12 15:40:57 +01:00
Marko Djordjevic
4e13648ebf fix: copy node_modules to Docker container for better-sqlite3 native dependencies 2026-02-12 15:32:19 +01:00
Marko Djordjevic
8646777f8d fix: create public directory and simplify Dockerfile COPY logic 2026-02-12 15:21:01 +01:00
Marko Djordjevic
957663e29a fix: use proper Drizzle query syntax in health endpoint instead of execute() 2026-02-12 15:19:50 +01:00
Marko Djordjevic
1f87950caf fix: update Dockerfile to use Node.js 20-alpine (required by Next.js 16) 2026-02-12 15:18:07 +01:00
Marko Djordjevic
23979ad2df chore: add Input component from shadcn/ui for label search 2026-02-12 15:15:13 +01:00
Marko Djordjevic
83be6bbdfb docs: comprehensive documentation updates for v2.0.0
- Update README.md with Docker quickstart and new features (label management, hacker theme)
- Add detailed Docker deployment section to DEPLOYMENT.md:
  - docker-compose usage
  - Environment configuration
  - Data persistence and backup
  - Container health checks
  - Troubleshooting steps
  - Production deployment guidance
- Create comprehensive CLAUDE_DESCRIPTION.md:
  - Project overview and version info
  - Recent changes in v2.0.0
  - Technical stack details
  - Core features and file structure
  - State management explanation
  - Data flow diagrams
  - API endpoints reference
  - Development workflow
  - Customization points
  - Performance and security notes
2026-02-12 15:13:59 +01:00
Marko Djordjevic
a1fa86fe55 feat: implement label management with sidebar, hacker theme, and Docker support
- Add label selection on chart with visual highlight (size 2x, color change)
- Implement keyboard delete handler (Delete/Backspace keys)
- Add comprehensive label management sidebar with:
  - Collapsible label annotations section
  - Search by timestamp
  - Filter by type (Break Up, Break Down, All)
  - Individual delete buttons
  - Count display
  - Click to select/highlight on chart
- Transform UI with hacker theme:
  - Matrix green (#00ff41) on dark background (#0a0e0a)
  - Monospace font (JetBrains Mono)
  - Glow effects on button hover and active states
  - Custom scrollbar styling
  - Terminal-inspired aesthetic
- Add Docker deployment:
  - Multi-stage Dockerfile with standalone output
  - docker-compose.yml with volume persistence
  - Non-root user (nextjs) for security
  - Health check endpoint integration
- Tailwind and CSS enhancements:
  - Custom colors (matrix, matrixDim, neonRed, etc.)
  - Glow box shadows and animations
  - Selection and scrollbar styling
2026-02-12 15:12:59 +01:00
Marko Djordjevic
74b84073a9 feat: create detailed implementation tasks (107 checkboxed tasks)
Breakdown into 16 phases:
1. Setup and Configuration (3 tasks)
2. API Extensions for Bulk Operations (8 tasks)
3. Hacker Theme - CSS Variables and Tailwind (12 tasks)
4. Hacker Theme - Component Styling (6 tasks)
5. Label Management - State and Selection (9 tasks)
6. Label Management - Keyboard Delete (7 tasks)
7. Label Management - Sidebar List UI Structure (8 tasks)
8. Label Management - Sidebar List Content (11 tasks)
9. Label Management - Search and Filter (8 tasks)
10. Label Management - Delete All Labels Button (9 tasks)
11. Toast Feedback System (8 tasks)
12. Docker - Dockerfile Creation (14 tasks)
13. Docker - Compose Configuration (12 tasks)
14. Documentation Updates (10 tasks)
15. Integration Testing and Validation (15 tasks)
16. Commit and Cleanup (8 tasks)

Each task is small, specific, and verifiable. Perfect for Haiku model execution.
2026-02-12 14:55:30 +01:00
Marko Djordjevic
ce96895bc3 feat: create comprehensive design document
Technical decisions with rationale:
- Label selection: parallel state to avoid disturbing line logic
- Label list UI: collapsible section in Toolbox with search/filter
- API design: extend DELETE with query params for bulk operations
- Docker: standalone output with multi-stage build
- Theme: CSS variables + Tailwind extension strategy
- Feedback: Toast component with terminal formatting

Includes risk mitigation, migration plan, and testing checklist
2026-02-12 14:49:26 +01:00
Marko Djordjevic
c41eb622fe refactor: remove line-deletion capability (already implemented)
Line deletion via Delete tool already exists in current implementation.
Focus on three new capabilities: label-management, docker-deployment, hacker-theme
2026-02-12 14:46:23 +01:00
Marko Djordjevic
a236d2c065 feat: create comprehensive specs for all four capabilities
- line-deletion: keyboard shortcuts and bulk delete with confirmation
- label-management: full CRUD UI in sidebar with search/filter
- docker-deployment: multi-stage build, compose, health checks
- hacker-theme: matrix-style colors, neon glows, monospace fonts
2026-02-12 14:44:45 +01:00
Marko Djordjevic
f1832de7da feat: create OpenSpec proposal for annotation enhancements and deployment 2026-02-12 14:39:41 +01:00
Marko Djordjevic
37c3adf42f feat: implement Phase 4 endpoint dragging with visual handles 2026-02-12 14:32:00 +01:00
Marko Djordjevic
91c516999d feat: implement Phase 3 line selection with visual feedback 2026-02-12 14:24:11 +01:00
Marko Djordjevic
c3292b4f6c fix: improve cursor circle visibility with white fill and larger radius 2026-02-12 14:20:57 +01:00
Marko Djordjevic
30b13d6898 feat: add cursor circle visual feedback during line drawing (Phase 2) 2026-02-12 14:09:01 +01:00
Marko Djordjevic
7f144e4ab8 docs: mark Phase 1 as complete in implementation plan 2026-02-12 14:05:01 +01:00
Marko Djordjevic
006e95c266 feat: add color support for line annotations
- Add color field to annotations schema with default blue (#3b82f6)
- Add color picker UI with 5 preset colors (red, green, blue, yellow, white)
- Pass selected color through component hierarchy (Page -> Toolbox, CandleChart -> SvgOverlay)
- Store color when creating line annotations
- Render lines with their stored color
- Update database with color column
- Preview lines show selected color during drawing

Phase 1 of LINE_DRAWING_IMPROVEMENTS.md complete
2026-02-12 14:04:51 +01:00
Marko Djordjevic
5767669b2c docs: add detailed implementation plan for line drawing improvements 2026-02-12 14:00:28 +01:00
Marko Djordjevic
daec116aab fix svg overlay z-index 2026-02-12 13:54:57 +01:00
Marko Djordjevic
551e8423b2 fix: sort markers by timestamp before setting on chart
- Add sorting to annotation markers in ascending order by time
- Fixes 'data must be asc ordered by time' error for markers
- Ensures both candle data and markers are properly sorted
2026-02-12 11:54:41 +01:00
Marko Djordjevic
17eb2ca745 fix: sort candle data before displaying in chart
- Add sorting by timestamp in ascending order before setting chart data
- Fixes 'data must be asc ordered by time' error from lightweight-charts
- Ensures chart displays correctly even if API returns unsorted data
2026-02-12 11:52:43 +01:00
Marko Djordjevic
11f0759b0e fix: resolve chart visibility issues after CSV upload
- Add fixed width to sidebar (w-64) to prevent layout collapse
- Change chart container from flex-1 to w-full h-full for proper sizing
- Chart now properly displays after CSV upload
2026-02-12 11:50:48 +01:00
Marko Djordjevic
9b5bc9b6b3 chore: mark all 59 tasks as completed in OpenSpec 2026-02-12 11:20:46 +01:00
Marko Djordjevic
23f18f405a feat: complete candle annotator implementation
- Created CandleChart component with lightweight-charts integration
- Implemented SvgOverlay component for line drawing
- Integrated all components in main page
- Fixed TypeScript and Tailwind CSS compatibility issues
- Added comprehensive README.md with project documentation
- Created DEPLOYMENT.md with setup and troubleshooting guide
- Downgraded to stable versions (Tailwind v3, lightweight-charts v4)
- All 59 tasks from OpenSpec completed
2026-02-12 11:20:29 +01:00
Marko Djordjevic
8d1e72579e feat: create UI shell and components
- Toolbox component with tool selection (break up/down, line, delete)
- FileUpload component with CSV upload functionality
- Main page layout with sidebar and chart area
- Tool state management and export functionality
2026-02-12 10:24:52 +01:00
Marko Djordjevic
096a80b229 feat: implement backend API endpoints
- CSV upload with papaparse (handles date strings and Unix timestamps)
- Annotations CRUD (GET, POST, DELETE)
- Candles GET endpoint
- Export annotations as CSV
2026-02-12 10:24:03 +01:00
Marko Djordjevic
d04b673cfa feat: initialize Next.js project with database schema
- Set up Next.js with App Router, TypeScript, Tailwind CSS
- Configure shadcn/ui with dark theme
- Install dependencies: lightweight-charts, papaparse, lucide-react
- Set up Drizzle ORM with better-sqlite3
- Create database schema for candles and annotations tables
- Generate migration SQL
2026-02-12 10:23:02 +01:00
Marko Djordjevic
7d2fc42b73 starting planning 2026-02-12 09:42:55 +01:00