- Added content-generator.js to handle the generation of "At a Glance" and "Radar Future" articles.
- Integrated OpenAI API for generating editorial content based on provided news and sources.
- Implemented job management for tracking the status of content generation tasks.
- Added functions for fetching news, processing source materials, and creating drafts for articles.
- Established structured prompts for AI to ensure content adheres to specified formats and requirements.
- Implemented `caveman-compress` skill to detect and compress natural language files.
- Created `caveman-review` skill for generating concise code review comments.
- Added `caveman-help` skill providing a quick-reference card for commands and modes.
- Developed `caveman-stats` skill to report real token usage and savings from the session log.
- Updated README and SKILL.md files for all new skills with usage instructions and examples.
- Introduced a script to clear banners from the database.
- Updated skills-lock.json to include new skills and their metadata.
feat: add file_url column to factory_reports and update related queries
chore: upgrade nodemailer to version 9.0.1 and undici to version 7.28.0
feat: enhance factory report editor with file upload functionality for PDFs
fix: increase bcrypt hash rounds for improved password security
fix: restrict file uploads to video, audio, and PDF formats
chore: implement safe URL handling for banner CTA links
chore: seed radar_items with random dates, sources, and tags for consistency
add: new image asset for chart analysis
- Removed several unused dependencies from frontend package.json including @tabler/icons-react, @tanstack/react-query, cobe, dotted-map, and jalaali-js.
- Deleted the hero-bg.original.mp4 video file as it was no longer needed.
- Removed live_dashboard.html and live_prices.js files, which were part of the old dashboard implementation.
- Eliminated the scraper.py script and related price fetching logic from the server, streamlining the backend.
- Removed the rtk.exe binary file as it was not required.