Major Features:
- Enhanced Mode v2: Smart Adaptive section selection strategy
* AI automatically selects ONE optimal section per iteration
* Intelligent selection based on quality assessment and strategic importance
* Section tracking to avoid duplicate modifications
* Fixed header level preservation (## stays ##, ### stays ###)
* Updated document code block format (document)
- Mermaid Auto-Fix System
* New POST /api/ai/fix-mermaid endpoint for automatic diagram correction
* Automatic error detection in preview and presentation modes
* Inter-window communication for seamless editor updates
* AI-powered syntax error resolution
- Comprehensive Logging System
* Centralized logger utility (utils/logger.js)
* API request/response middleware logging
* AI operations: rephrase, check-inconsistencies, check-duplications, give-advice, liberty-mode, fix-mermaid
* Storage operations: create, read, update, delete journals
* Export operations: PDF and Web ZIP generation
* Structured logging with timestamps, levels, categories, and metadata
Improvements:
- Table of Contents: Clean display with markdown formatting stripped from titles
- Section badges: Fixed visibility with hardcoded blue background (#2563eb)
- Internationalization: Complete English translation (lang, UI text, placeholders, comments)
- Code cleanup: Removed all emojis from codebase
Technical Changes:
- routes/ai.js: Enhanced mode implementation, Mermaid fix endpoint, comprehensive logging
- routes/api.js: Storage operation logging
- routes/export.js: Export operation logging
- routes/index.js: Presentation mode Mermaid auto-fix
- assets/js/app.js: TOC markdown stripping, Mermaid error handling, message listeners
- assets/css/style.css: Dark mode comment, English placeholders, header icon
- views/page.js: English lang attribute, favicon, scroll-to-top button
- views/header.js: Theme toggle icon
- utils/logger.js: New centralized logging system
- app.js: API request/response logging middleware
50 lines
1.3 KiB
JavaScript
50 lines
1.3 KiB
JavaScript
const express = require('express');
|
|
const path = require('path');
|
|
const { logger } = require('./utils/logger');
|
|
|
|
const indexRoutes = require('./routes/index');
|
|
const apiRoutes = require('./routes/api');
|
|
const templatesRoutes = require('./routes/templates');
|
|
const exportRoutes = require('./routes/export');
|
|
const aiRoutes = require('./routes/ai');
|
|
|
|
const app = express();
|
|
const port = process.env.PORT || 3000;
|
|
|
|
app.use(express.json());
|
|
app.use(express.urlencoded({ extended: true }));
|
|
|
|
app.use('/assets', express.static(path.join(__dirname, 'assets')));
|
|
|
|
// Create data directory if it doesn't exist
|
|
const fs = require('fs');
|
|
const dataDir = path.join(__dirname, 'data');
|
|
if (!fs.existsSync(dataDir)) {
|
|
fs.mkdirSync(dataDir);
|
|
logger.info('SYSTEM', 'Created data directory', { path: dataDir });
|
|
}
|
|
|
|
// API request logging middleware
|
|
app.use((req, res, next) => {
|
|
const start = Date.now();
|
|
|
|
logger.apiRequest(req.method, req.path, req.body);
|
|
|
|
res.on('finish', () => {
|
|
const duration = Date.now() - start;
|
|
logger.apiResponse(req.path, res.statusCode, duration);
|
|
});
|
|
|
|
next();
|
|
});
|
|
|
|
app.use('/', indexRoutes);
|
|
app.use('/api', apiRoutes);
|
|
app.use('/api/templates', templatesRoutes);
|
|
app.use('/api/export', exportRoutes);
|
|
app.use('/api/ai', aiRoutes);
|
|
|
|
app.listen(port, () => {
|
|
logger.systemStart(port);
|
|
console.log(`Server running on port ${port}`);
|
|
}); |