Commit graph

35 commits

Author SHA1 Message Date
fddb33bac5 chore: Migración jj → git puro
- CLAUDE.md: VCS jj → git, comandos actualizados

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 13:27:19 +01:00
0682d48057 docs: Añadir sección LSP/zls a CLAUDE.md 2025-12-29 12:33:15 +01:00
fc5f26d04d CLAUDE.md: jj + NORMAS_ESENCIALES 2025-12-25 19:24:18 +01:00
R.Eugenio
b10c70fec7 Añadir /init optimizado (lee NORMAS_ESENCIALES + teamdocs)
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 13:28:54 +01:00
R.Eugenio
2d95f0e28b refactor: Migrar ArrayList a ArrayListUnmanaged (Zig 0.15)
Archivos actualizados:
- async_loop.zig: timers
- diagnostic.zig: format()
- sixel.zig: encode(), encodeSixelRow()
- filepicker.zig: FileEntry.children
- textarea.zig: lines (ArrayList de ArrayList)

Cambio de API:
- std.ArrayList(T).init(alloc) → std.ArrayListUnmanaged(T) = .{}
- list.append(item) → list.append(alloc, item)
- list.deinit() → list.deinit(alloc)
- list.writer() → list.writer(alloc)
- list.toOwnedSlice() → list.toOwnedSlice(alloc)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 01:39:41 +01:00
c4e1c97ec1 docs: Actualizar rutas teamdocs en CLAUDE.md
Nueva estructura teamdocs con carpetas agenda/, normas/, historial/.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-12 00:13:48 +01:00
5c4b069d08 docs: Renombrar TEAM_STANDARDS a teamdocs
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-11 19:33:46 +01:00
ee2eb73068 docs: Add VERIFIED_FEATURES.md - tracking production-tested features
Documento inicial - ninguna feature verificada en producción aún.
zcatui es librería TUI, no usada en zsimifactu (que es GUI).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 12:01:03 +01:00
af833ddc0e 🔧 FIX: Compatibilidad Zig 0.15.2
- build.zig.zon: minimum_zig_version actualizado a 0.15.0
- ZIG_VERSION_NOTES.md: Referencia a sistema notas versiones

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-09 23:01:17 +01:00
762f0dedb4 docs: Update CLAUDE.md test count to 281
- Accurate test count from actual test run
- Ready for new conversation context

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-09 01:46:41 +01:00
112840106d docs: Complete CLAUDE.md with full project context
- Add documentation table (API_REFERENCE.md reference)
- Add paradigm explanation (Immediate Mode)
- Add "Resume for new conversation" section
- Update all 20 demos in commands section
- Add verification commands for quick start

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-08 23:00:50 +01:00
75185cb4fa docs: Add comprehensive API reference manual
- Complete API documentation for zcatui v2.2
- All 35 widgets documented with examples
- Core types: Buffer, Style, Text, Layout
- Terminal interface and event handling
- Animation, focus, themes systems
- v2.2 features: resize, drag, debug, profiler
- Utilities: clipboard, hyperlinks, notifications
- File index with all 70+ source files
- 1100+ lines of documentation

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-08 22:52:59 +01:00
70448f96a8 docs: Update CLAUDE.md for v2.2
- Version bump v2.1 → v2.2
- Add v2.2 features section (13 new modules)
- Update statistics (70+ files, 20 demos)
- Update project structure with v2.2 modules
- Update history and current state sections

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-08 22:47:36 +01:00
7abc87a4f5 feat: zcatui v2.2 - Complete feature set with 13 new modules
New modules (13):
- src/resize.zig: SIGWINCH terminal resize detection
- src/drag.zig: Mouse drag state and Splitter panels
- src/diagnostic.zig: Elm-style error messages with code snippets
- src/debug.zig: Debug overlay (FPS, timing, widget count)
- src/profile.zig: Performance profiling with scoped timers
- src/sixel.zig: Sixel graphics encoding for terminal images
- src/async_loop.zig: epoll-based async event loop with timers
- src/compose.zig: Widget composition utilities
- src/shortcuts.zig: Keyboard shortcut registry
- src/widgets/logo.zig: ASCII art logo widget

Enhanced modules:
- src/layout.zig: Added Constraint.ratio(num, denom)
- src/terminal.zig: Integrated resize handling
- src/root.zig: Re-exports all new modules

New examples (9):
- resize_demo, splitter_demo, dirtree_demo
- help_demo, markdown_demo, progress_demo
- spinner_demo, syntax_demo, viewport_demo

Package manager:
- build.zig.zon: Zig package manager support

Stats: 60+ source files, 186+ tests, 20 executables

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-08 22:46:06 +01:00
c8316f2134 feat: zcatui v2.1 - 7 new widgets, innovations, and technical docs
New widgets (Phase 1-3):
- Spinner: 10 animation styles (dots, line, arc, pulse, etc.)
- Help: Keybinding display with categories
- Viewport: Content scrolling (static/scrollable)
- Progress: Multi-step progress with styles
- Markdown: Basic markdown rendering (headers, lists, code)
- DirectoryTree: File browser with icons and filters
- SyntaxHighlighter: Code highlighting (Zig, Rust, Python, etc.)

Innovation modules:
- testing.zig: Widget testing framework (harness, simulated input, benchmarks)
- theme_loader.zig: Theme hot-reload from JSON/KV files
- serialize.zig: State serialization, undo/redo stack
- accessibility.zig: A11y support (ARIA roles, screen reader, high contrast)

Layout improvements:
- Flex layout with JustifyContent and AlignItems

Documentation:
- TECHNICAL_REFERENCE.md: Comprehensive 1200+ line technical manual

Stats: 67 files, 34 widgets, 250+ tests

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-08 20:29:18 +01:00
508bc37dca docs: Reorganize CLAUDE.md with startup protocol
- Added "PROTOCOLO DE INICIO" section at the top
- Clear instructions to read TEAM_STANDARDS first
- Verification steps before starting work
- Streamlined structure for quick reference
- All essential info for next conversation

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-08 19:41:37 +01:00
73667a752e docs: Update CLAUDE.md with v2.0 complete documentation
- Full project status: v2.0 FEATURE COMPLETE
- 60 source files, 27 widgets, 186+ tests
- Detailed module breakdown (core, events, features, widgets)
- Examples and commands reference
- Focus management, themes, unicode, termcap documentation
- Team methodology and workflow notes
- Historical development timeline
- Quick reference section for next conversations

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-08 19:37:58 +01:00
a928fc55fd feat: Add Unicode width calculation and terminal capability detection
Unicode width (src/unicode.zig):
- charWidth(): Returns display width of Unicode codepoints (0, 1, or 2)
- stringWidth(): Calculates display width of UTF-8 strings
- truncateToWidth(): Truncates strings to fit display columns
- stringWidthBounded(): Width calculation with byte tracking
- Handles CJK (double-width), combining marks (zero-width),
  control characters, and emoji

Terminal capabilities (src/termcap.zig):
- detect(): Auto-detects terminal features from environment
- ColorSupport: none, basic(8), extended(16), 256, true_color
- Detects: hyperlinks, images, clipboard, mouse, unicode
- Known terminals: kitty, WezTerm, iTerm, VSCode, Alacritty, etc.
- Respects NO_COLOR and FORCE_COLOR env vars
- rgbTo256(): Converts RGB to 256-color palette
- rgbToBasic(): Converts RGB to 8/16 ANSI colors
- adaptColor(): Downgrades colors based on terminal support

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-08 18:57:20 +01:00
96810d80ea feat: Add focus management, themes, and comprehensive tests
Focus management system (src/focus.zig):
- FocusRing for tab-order navigation within widget groups
- FocusManager for managing multiple focus rings
- Focusable interface with vtable pattern
- Focus trapping for modals

Theme system (src/theme.zig):
- Theme struct with full color properties
- Style builder methods (primaryStyle, errorStyle, etc.)
- 10 predefined themes: dark, light, dracula, nord, gruvbox,
  solarized_dark, monokai, one_dark, tokyo_night, catppuccin

Comprehensive test suite (src/tests/):
- widget_tests.zig: Block, Gauge, Checkbox, RadioGroup, Select,
  Slider, StatusBar, Toast, Panel, TabbedPanel, Rect, Buffer, Style
- theme_tests.zig: Theme system and predefined themes
- layout_tests.zig: Layout constraints and splits
- tests.zig: Test aggregator

Bug fixes:
- Fixed Zig 0.15 API compatibility in inline tests
- style.fg -> style.foreground
- std.time.sleep -> std.Thread.sleep
- Cell.char -> Cell.symbol with proper Symbol comparison

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-08 18:29:00 +01:00
79c0bb1a58 feat: Add form widgets, status bar, toast system, and documentation
Form widgets:
- Checkbox and CheckboxGroup for boolean inputs
- RadioGroup for single-selection options
- Select dropdown with keyboard navigation
- Slider and RangeSlider for numeric inputs
- TextArea for multi-line text input

UI utilities:
- StatusBar for bottom-of-screen information
- Toast and ToastManager for notifications

Examples:
- form_demo.zig: Interactive form widgets showcase
- panel_demo.zig: Docking panel system demo

Documentation:
- Complete README.md with Quick Start, widget examples, and API reference

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-08 18:02:06 +01:00
d3e42a241d feat: Add LEGO Panel System
A modular panel system for building complex layouts:

Panel:
- Basic container with borders, title, focus state
- Min/max width/height constraints
- Content render callback

PanelSplit:
- Split container (horizontal/vertical)
- Configurable ratios per child
- Gap between panels

TabbedPanel:
- Multiple panels with tab navigation
- Tab bar rendering
- Per-tab content renderers

DockingPanel:
- Dockable positions (left/right/top/bottom/center)
- Floating mode with custom position/size
- Show/hide/close functionality

PanelManager:
- Manages collection of panels
- Focus navigation
- Layered rendering (docked → center → floating)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-08 17:40:38 +01:00
04e18ff0c1 feat: Add lazy rendering and scrollable containers
Lazy rendering (src/lazy.zig):
- RenderCache: Cache rendered content with TTL
- RenderTask: Background thread-based rendering
- Throttle: Rate-limit render updates
- Debounce: Delay processing until quiet period
- DeferredRender: First-access rendering

Scrollable containers (src/widgets/scroll.zig):
- ScrollView: Basic scrollable container
- ScrollState: Scroll position management
- VirtualList: Efficient virtual scrolling for large datasets
- InfiniteScroll: Load-more-on-demand container

Note: Zig 0.15's new io.Async is still in development.
Thread-based implementation provided for compatibility.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-08 17:38:47 +01:00
5ac74ebff5 feat: Add terminal extensions and new widgets
Hyperlinks (OSC 8):
- Clickable hyperlinks with URL and display text
- ID support for link grouping
- URL encoding utility

Notifications (OSC 9/777):
- iTerm2-style (OSC 9) and urxvt-style (OSC 777)
- NotificationManager with title/body support

Image display (Kitty/iTerm2):
- Kitty Graphics Protocol with chunked transmission
- iTerm2 inline images
- File and raw data display

Tree widget:
- Hierarchical tree view with expand/collapse
- Customizable symbols (Unicode/ASCII)
- TreeState for selection navigation

FilePicker widget:
- File browser using Tree widget
- Lazy-loading directory contents
- Hidden files toggle, file icons

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-08 17:34:33 +01:00
8c218a3f0d feat: Add ContextMenu and Tooltip widgets
ContextMenu:
- Right-click context menu support
- Auto-adjust position to fit in bounds
- containsPoint for hit testing
- Wraps existing Menu widget

Tooltip:
- Single and multiline text support
- Configurable positioning (above/below/left/right/auto)
- Customizable style, border, padding
- TooltipManager with hover delay timing

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-08 17:18:45 +01:00
b393008497 Update CLAUDE.md to v1.3 with complete documentation
Documents all features implemented in this session:
- Input widget (readline-style)
- Popup and Modal widgets
- Menu and MenuBar widgets
- Animation system (Easing, Animation, Timer)
- Clipboard OSC 52 support
- 10 example demos

Updated roadmap with pending features:
- Scrollable containers
- Textarea widget
- Tree widget
- File picker
- Hyperlinks OSC 8
- Image protocol
- Notifications OSC 9/777

Includes summary of LEGO panels study from simifactu-fyne

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-08 17:01:41 +01:00
e7045097e5 Add Popup/Modal and Menu widgets
Popup widget:
- Floating overlay with optional backdrop dimming
- Configurable size and position (or centered)
- Block wrapper support

Modal widget:
- Title, message, and action buttons
- Keyboard navigation (Tab/arrows to switch buttons)
- Helper functions: confirmDialog, alertDialog, yesNoCancelDialog

Menu widgets:
- MenuItem: action, separator, submenu, toggle types
- Menu: Dropdown menu with selection navigation
- MenuBar: Horizontal menu bar with dropdown support
- Shortcut display support
- Enabled/disabled state

Example: menu_demo.zig with interactive menu bar and dialogs

Tests: 11 tests for popup/menu, all pass

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-08 16:52:38 +01:00
3ec75f6264 Add clipboard support via OSC 52 escape sequences
New features:
- Copy text to system clipboard (Ctrl+V paste)
- Copy to X11 primary selection (middle-click paste)
- Copy to both selections simultaneously
- Clear clipboard contents
- Query clipboard (limited terminal support)
- Parse OSC 52 responses

API:
- copy(allocator, writer, text) - allocating version
- copySmall(writer, text) - stack-based for text <= 1024 bytes
- copyTo/copySmallTo - select target (clipboard/primary/both)
- clear(writer) - clear clipboard
- parseResponse(allocator, response) - decode clipboard responses

Example: clipboard_demo.zig with interactive testing

Tests: 8 clipboard tests, all pass

Terminal support: xterm, iTerm2, kitty, alacritty, WezTerm, foot
Note: tmux requires 'set -g set-clipboard on'

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-08 13:43:36 +01:00
7c6515765e Add animation system with easing functions and timers
New features:
- Easing functions: linear, ease-in/out, cubic, expo, bounce, elastic, back
- Animation struct for tweening values over time
- AnimationGroup for parallel/sequential animations
- Timer for frame-based updates (one-shot and repeating)
- Helper functions: lerp, inverseLerp, mapRange

Animation features:
- Configurable repeat count (-1 for infinite)
- Ping-pong mode (reverse on repeat)
- Delay before start
- Pause/resume control
- getValue as f64, i64, or u16

Example: animation_demo.zig comparing 5 easing functions

Tests: 12 animation tests, all pass

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-08 13:40:07 +01:00
4d27a7b13d Add readline-style Input widget with history support
New widget: src/widgets/input.zig
- Basic editing (insert, delete, backspace)
- Cursor movement (home, end, left, right)
- Word navigation (Ctrl+Left/Right, Ctrl+B/F)
- Kill/yank operations (Ctrl+K, Ctrl+U, Ctrl+Y)
- Delete word (Ctrl+W)
- History navigation (Up/Down arrows)
- Unicode support (UTF-8 encoding)
- Password masking support

New example: examples/input_demo.zig
- Interactive demo with normal and password inputs
- Tab to switch focus between inputs
- Shows submitted values in message log

Run with: zig build input-demo

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-08 13:26:56 +01:00
b9223dec85 Add 3 new interactive demo examples
New examples:
- list_demo.zig: Interactive list with j/k navigation
- table_demo.zig: Table with row selection and status colors
- dashboard.zig: Multi-widget demo (Tabs, Gauges, Sparklines, List)

Also includes:
- build.zig: Added build targets for all new examples
- table.zig: Fixed Cell.content default, HighlightSpacing check, ColumnPos type

Run with: zig build list-demo / table-demo / dashboard

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-08 13:22:42 +01:00
5556ee1370 zcatui v1.2 - Sistema de eventos integrado (crossterm-style)
Eventos de teclado:
- Event, KeyEvent, KeyCode, KeyModifiers, KeyEventKind
- Soporte para todas las teclas: caracteres, F1-F12, navegación, control
- Modificadores: Ctrl, Alt, Shift, Super

Eventos de ratón:
- MouseEvent, MouseEventKind, MouseButton
- Click, release, drag, scroll (up/down/left/right)
- Posición (column, row) con modificadores
- Protocolos: SGR extended y X10 legacy

Parser de escape sequences:
- CSI sequences (arrows, F-keys, navigation)
- SS3 sequences (F1-F4 alternativo)
- SGR mouse protocol (mejores coordenadas)
- X10 mouse protocol (compatibilidad)
- Focus events, bracketed paste

Cursor control:
- Visibility: show/hide
- Blinking: enable/disable
- Styles: block, underline, bar (blinking/steady)
- Position: moveTo, moveUp/Down/Left/Right
- Save/restore position

Terminal integrado:
- pollEvent(timeout_ms) - polling con timeout
- readEvent() - blocking read
- enableMouseCapture/disableMouseCapture
- enableFocusChange/disableFocusChange
- enableBracketedPaste/disableBracketedPaste

Ejemplo interactivo:
- examples/events_demo.zig

Tests: 47 (29 nuevos para eventos y cursor)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-08 12:55:54 +01:00
7acf583763 Documentacion actualizada para v1.1
- CLAUDE.md: actualizado a v1.1, seccion de optimizaciones
- docs/ARCHITECTURE.md: detalle de optimizaciones implementadas
- docs/API.md: nuevos tipos Symbol, DiffIterator, CellUpdate

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-08 12:25:52 +01:00
1df3172afc Mejoras de performance v1.1
Buffer optimizations:
- Symbol: nuevo tipo compacto para almacenar UTF-8 (4 bytes max)
  - Evita conversion codepoint->UTF8 en cada render
  - fromCodepoint() y fromSlice() para crear symbols
  - slice() para output directo sin conversion

- Cell: refactorizado para usar Symbol
  - Eliminado campo 'dirty' (innecesario con diff)
  - Nuevo metodo eql() para comparacion eficiente
  - char() accessor para compatibilidad legacy

- Buffer.diff(): nuevo sistema de renderizado diferencial
  - DiffIterator compara buffers celda a celda
  - Solo retorna celdas que cambiaron
  - Reduce drasticamente I/O a terminal

- Buffer.resize(): nuevo metodo para redimensionar
  - Preserva contenido existente donde posible

- Backend.writeSymbol(): escribe UTF-8 directo
  - Mas eficiente que writeChar() con conversion

- Terminal.flush(): usa diff iterator
  - Solo escribe celdas modificadas

Tests: 18 tests (9 nuevos para Symbol, Cell, diff)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-08 12:23:21 +01:00
560ed1b355 zcatui v1.0 - Implementacion completa de todos los widgets ratatui
Widgets implementados (13):
- Block, Paragraph, List, Table
- Gauge, LineGauge, Tabs, Sparkline
- Scrollbar, BarChart, Canvas, Chart
- Calendar (Monthly), Clear

Modulos:
- src/text.zig: Span, Line, Text, Alignment
- src/symbols/: line, border, block, bar, braille, half_block, scrollbar, marker
- src/widgets/: todos los widgets con tests

Documentacion:
- docs/ARCHITECTURE.md: arquitectura tecnica
- docs/WIDGETS.md: guia completa de widgets
- docs/API.md: referencia rapida
- CLAUDE.md: actualizado con estado v1.0

Tests: 103+ tests en widgets, todos pasan

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-08 12:18:41 +01:00
2a62c0f60b Inicio proyecto zcatui - TUI library para Zig
Librería TUI inspirada en ratatui (Rust), implementada en Zig 0.15.2.

Estructura inicial:
- src/style.zig: Color, Style, Modifier
- src/buffer.zig: Cell, Buffer, Rect
- src/layout.zig: Layout, Constraint, Direction
- src/terminal.zig: Terminal abstraction
- src/backend/backend.zig: ANSI escape sequences
- src/widgets/block.zig: Block con borders y título
- src/widgets/paragraph.zig: Paragraph con wrapping
- examples/hello.zig: Demo funcional

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-08 01:56:44 +01:00