CI/CD Pipeline Improvement - Add automated rollback on deployment
failure and Telegram notifications for CI/deploy status.
Changes:
- scripts/deploy-prod.sh: Add rollback_save_image(), rollback_restore_image(),
and telegram_notify() functions
- scripts/deploy-prod.sh: Save current Docker image before building new one
- scripts/deploy-prod.sh: Rollback to previous image on health check failure
- .gitea/workflows/ci.yaml: Add Telegram notifications for CI failures
- memento-note/eslint.config.mjs: Disable experimental React Compiler rules
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Ajoute la base organisable par carnet (schéma, champs partagés, valeurs par note)
avec activation guidée, tableau éditable, kanban et suppression de colonnes.
Corrige le multiselect en vue tableau et enrichit sidebar, grille et i18n FR/EN.
Inclut aussi les améliorations flashcards SM-2, l'audit consentement IA et la
robustesse du serveur MCP (config, validation, rate-limit, métriques).
Co-authored-by: Cursor <cursoragent@cursor.com>
- Auto-sauvegarde à la fermeture de l'éditeur fullPage si isDirty (évite
que la vignette reste après suppression d'image sans Ctrl+S)
- Correction de resolveImagesForSave : fusion des images contenu HTML +
images standalone (hors éditeur) en excluant les removedImageUrls,
pour ne pas perdre les images uploadées séparément à la sauvegarde
Livre US-FLASHCARDS avec decks, session de révision, stats et migration Prisma. Finalise le Web Clipper (i18n 15 langues) et corrige les erreurs ESLint bloquant la CI.
Co-authored-by: Cursor <cursoragent@cursor.com>
Rend les liens entre notes visibles et persistants (sync NoteLink au save, auto-save, graphe réseau rafraîchi), ajoute living blocks, Memory Echo, recherche globale, consentement IA explicite et consolide les prototypes design en architectural-grid.
Co-authored-by: Cursor <cursoragent@cursor.com>
Use editor.commands.insertContent with JSON node definition instead of
direct transaction manipulation. This is more reliable for custom nodes.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Fix transaction.mapping.map usage - it returns a position, not mapping
- Add 5-minute in-memory cache for chart suggestions (max 50 entries)
- Cache key based on content hash + selection
- Significantly improves UX when re-analyzing same content
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Instead of relying on HTML parsing which can be inconsistent,
create the chartBlock node directly using TipTap's schema and transaction API.
This ensures the custom node is properly created and rendered as a visual chart.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Use NoteChart directly with props instead of NoteChartFromCode
- Remove markdown ticks from chartSuggestionToMarkdown output
- Export NoteChart component for direct use in previews
Now the 3 suggestions correctly show different chart types.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Convert chart markdown to <pre><code class="language-chart"> HTML format
- Fix parseHTML to store code content in node attrs
- Fix renderHTML to output actual code content instead of placeholder
This fixes charts rendering as raw markdown text instead of visual charts.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Use getChatProvider() + provider.getModel() instead of
resolveAiRouteWithTiming which doesn't return a provider function.
Follow the pattern used in chat/insights/route.ts.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The AI router only supports lanes: 'chat', 'tags', 'embedding'.
'suggest-charts' was not a valid lane causing 500 errors.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Add step-by-step console logging in API route
- Show actual error message in dialog
- Add debug info section
- Wrap each section in try-catch to isolate failure point
- Remove conflicting tool approach, use direct JSON
- Add fallback: extract numbers from regex if AI fails
- Add debug section to show what content was analyzed
- Be more lenient: any 2+ numbers = valid chart
- Better error messages
- Add console logging for debugging
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1. Script warning in layout.tsx
- Use Next.js Script component instead of plain <script>
2. QUOTA_EXCEEDED bug for chart suggestions
- Add 'suggest_charts' to VALID_FEATURES
- Add 'suggest_charts' to TIER_LIMITS for all tiers
- Fix route to use 'suggest_charts' instead of invalid 'ai' feature
This fixes the issue where users with valid credit were getting
QUOTA_EXCEEDED errors because 'ai' was not a valid feature name.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The CookieConsentBanner uses useLanguage() hook but was rendered
outside of LanguageProvider in RootLayout. Added LanguageProvider
wrapper to fix the runtime error.
- Add quotaExceeded flag to response for better error UX
- Show dedicated quota exceeded state with upgrade button
- Improve AI prompt to better detect data patterns
- Add chart type-specific colors (blue, indigo, emerald, violet, etc.)
- Replace generic primary/10 colors with varied accent colors
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Implement slash command "/suggest-charts" that analyzes note content
and suggests 3 appropriate chart types with visual previews.
Created:
- chart-suggestion.tool.ts: AI tool for data extraction and chart recommendations
- suggest-charts/route.ts: API endpoint for chart suggestions
- chart-suggestion.service.ts: Frontend service layer
- chart-suggestions-dialog.tsx: Modal with 3 chart proposals and thumbnails
- tiptap-chart-extension.tsx: TipTap Node extension for rendering chart blocks
Modified:
- rich-text-editor.tsx: Added slash command, toolbar button, and dialog integration
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>