Skip to content

Commit 0da2d2e

Browse files
queeliusclaude
andcommitted
Release v0.2.0: Add build, serve, and manifest support
New features: - `longecho build` generates static sites from ECHO archives - `longecho serve` provides local HTTP preview - Manifest support (manifest.json/yaml) for archive configuration - Hierarchical archive support with sub-source discovery Changes: - Restructure docs: point MkDocs to spec/ directory - Remove outdated docs/ in favor of spec/ as single source of truth - Add JSON schema for manifest validation - Add Jinja2 templates for site generation - Expand test coverage (114 tests, 78% coverage) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent f0c9a5a commit 0da2d2e

27 files changed

Lines changed: 2977 additions & 975 deletions

CLAUDE.md

Lines changed: 58 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -4,52 +4,88 @@ Guidance for Claude Code when working with this repository.
44

55
## Project Status
66

7-
**longecho is specification-only.** No implementation exists yet.
7+
**Alpha.** Core functionality implemented and tested (78% coverage, 114 tests).
88

99
## What longecho Is
1010

1111
longecho provides:
1212

13-
1. **Documentation** — Explains and motivates the ECHO philosophy
14-
2. **Validator** — Checks if a directory is ECHO-compliant (`longecho check`)
13+
1. **Documentation** — Explains and motivates the ECHO philosophy (`spec/`)
14+
2. **Validator** — Checks ECHO compliance (`longecho check`)
15+
3. **Discovery** — Finds ECHO sources (`longecho discover`, `longecho search`)
16+
4. **Site Builder** — Generates unified static sites (`longecho build`)
17+
5. **Dev Server** — Previews archives locally (`longecho serve`)
1518

16-
That's it. longecho is not an orchestrator, not a format mediator, not a registry.
19+
## Commands
1720

18-
## What longecho Is NOT
21+
```bash
22+
longecho check ~/path # Is this directory ECHO-compliant?
23+
longecho discover ~/ # Find ECHO-compliant directories
24+
longecho search ~/ "query" # Search README descriptions
25+
longecho info ~/path # Show detailed source info
26+
longecho formats # List recognized durable formats
27+
longecho build ~/archive # Generate static site
28+
longecho serve ~/archive # Preview via HTTP
29+
```
30+
31+
## Architecture
1932

20-
- **Not an orchestrator** — Toolkits (ctk, btk, persona-tk, stone-tk) invoke themselves
21-
- **Not a format mediator** — Each toolkit defines its own input/output formats
22-
- **Not a registry** — Each toolkit's own README documents its compliance
33+
```
34+
src/longecho/
35+
├── __init__.py # Public API exports
36+
├── checker.py # ECHO compliance checking
37+
├── discovery.py # Source discovery and search
38+
├── manifest.py # Manifest loading/validation
39+
├── build.py # Static site generation
40+
├── serve.py # HTTP server for preview
41+
├── cli.py # Typer CLI interface
42+
└── templates/ # Jinja2 HTML templates
43+
```
2344

2445
## Key Principles
2546

2647
1. **ECHO philosophy** — Self-describing data with README.md + durable formats
27-
2. **Minimal scope**longecho is docs + validator only
28-
3. **Standalone toolkits**persona-tk and stone-tk work independently
48+
2. **Graceful degradation**Archives work without longecho; longecho adds convenience
49+
3. **Standalone toolkits**ctk, btk, etc. work independently; longecho unifies their outputs
2950

3051
## Documentation Structure
3152

3253
```
3354
spec/
3455
├── ECHO.md # ECHO philosophy (standalone)
35-
├── LONGECHO.md # Validator specification
36-
├── PERSONA-TK.md # Persona toolkit spec (standalone)
37-
├── STONE-TK.md # Stone toolkit spec (standalone)
38-
├── TOOLKIT-ECOSYSTEM.md # List of existing toolkits
56+
├── LONGECHO.md # Tool specification
57+
├── MANIFEST-SCHEMA.md # Manifest format spec
58+
├── PERSONA-TK.md # Persona toolkit spec
59+
├── STONE-TK.md # Stone toolkit spec
60+
├── TOOLKIT-ECOSYSTEM.md # List of toolkits
3961
└── INTERVIEW-INSIGHTS.md # Design decisions
4062
```
4163

42-
## Expected Commands (When Implemented)
64+
## Development
4365

4466
```bash
45-
longecho check ~/path # Is this directory ECHO-compliant?
46-
longecho discover ~/ # Find ECHO-compliant directories
47-
longecho search ~/ # Search README descriptions
67+
# Install with dev dependencies
68+
pip install -e ".[dev,full]"
69+
70+
# Run tests
71+
pytest tests/ -v
72+
73+
# Run with coverage
74+
pytest tests/ --cov=src/longecho --cov-report=term-missing
75+
76+
# Type checking
77+
mypy src/longecho/
78+
79+
# Linting
80+
ruff check src/longecho/
4881
```
4982

50-
## Expected Tech Stack
83+
## Tech Stack
5184

52-
- Python 3.8+
53-
- pytest for testing
54-
- black/flake8/mypy for code quality
85+
- Python 3.9+
5586
- Typer for CLI
87+
- Rich for terminal output
88+
- Jinja2 for templates
89+
- pytest for testing
90+
- mypy for type checking
91+
- ruff for linting

README.md

Lines changed: 54 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,20 @@
11
# longecho
22

3-
ECHO philosophy documentation and compliance validator.
3+
ECHO philosophy documentation, compliance validator, and static site builder.
44

55
## Status
66

7-
**Incubating.** Specifications are being developed. No implementation yet.
7+
**Alpha.** Core functionality implemented and tested.
88

99
## What This Is
1010

1111
longecho provides:
1212

1313
1. **Documentation** — Explains and motivates the ECHO philosophy
1414
2. **Validator** — Checks if a directory is ECHO-compliant
15+
3. **Discovery** — Finds and searches ECHO sources
16+
4. **Site Builder** — Generates unified static sites from archives
17+
5. **Dev Server** — Previews archives via HTTP
1518

1619
## The ECHO Philosophy
1720

@@ -24,31 +27,69 @@ A directory is ECHO-compliant if it has a README and uses durable formats. That'
2427

2528
See [spec/ECHO.md](spec/ECHO.md) for the full philosophy.
2629

27-
## Commands (Planned)
30+
## Installation
31+
32+
```bash
33+
pip install longecho
34+
35+
# With optional dependencies for YAML manifests
36+
pip install longecho[full]
37+
```
38+
39+
## Commands
2840

2941
```bash
3042
# Check if a directory is ECHO-compliant
3143
longecho check ~/my-data/
3244

33-
# Find ECHO-compliant directories (optional)
45+
# Find ECHO-compliant directories
3446
longecho discover ~/
3547

36-
# Search README descriptions (optional)
48+
# Search README descriptions
3749
longecho search ~/ "conversations"
50+
51+
# Show detailed info about a source
52+
longecho info ~/my-data/
53+
54+
# List recognized durable formats
55+
longecho formats
56+
57+
# Build a static site from an ECHO archive
58+
longecho build ~/my-archive/
59+
60+
# Serve an archive via HTTP for preview
61+
longecho serve ~/my-archive/ --port 8000
3862
```
3963

40-
## What longecho Is NOT
64+
## Boundaries
4165

42-
- **Not an orchestrator** — Toolkits invoke themselves
43-
- **Not a format mediator** — Each toolkit defines its own interfaces
44-
- **Not a registry** — Toolkits document their own compliance
66+
**longecho unifies, but doesn't orchestrate toolkits.** Each toolkit (ctk, btk, etc.) exports its own ECHO-compliant archive independently. longecho's `build` command combines these into a unified browsable site, but doesn't invoke or manage the toolkits themselves.
67+
68+
**longecho doesn't mediate formats.** There is no central interchange format. Each toolkit defines its own input/output formats.
69+
70+
**longecho doesn't maintain a registry.** If a toolkit is ECHO-compliant, its own README documents that fact.
4571

4672
## Documentation
4773

4874
| Document | What it covers |
4975
|----------|----------------|
5076
| [spec/ECHO.md](spec/ECHO.md) | ECHO philosophy |
51-
| [spec/LONGECHO.md](spec/LONGECHO.md) | Validator specification |
52-
| [spec/PERSONA-TK.md](spec/PERSONA-TK.md) | Persona toolkit spec (standalone) |
53-
| [spec/STONE-TK.md](spec/STONE-TK.md) | Stone toolkit spec (standalone) |
54-
| [spec/TOOLKIT-ECOSYSTEM.md](spec/TOOLKIT-ECOSYSTEM.md) | List of existing toolkits |
77+
| [spec/LONGECHO.md](spec/LONGECHO.md) | Tool specification |
78+
| [spec/MANIFEST-SCHEMA.md](spec/MANIFEST-SCHEMA.md) | Manifest format for archives |
79+
| [spec/TOOLKIT-ECOSYSTEM.md](spec/TOOLKIT-ECOSYSTEM.md) | List of ECHO-compliant toolkits |
80+
81+
## Development
82+
83+
```bash
84+
# Install with dev dependencies
85+
pip install -e ".[dev,full]"
86+
87+
# Run tests
88+
pytest tests/ -v
89+
90+
# Type checking
91+
mypy src/longecho/
92+
93+
# Linting
94+
ruff check src/longecho/
95+
```

docs/blog/why-echo.md

Lines changed: 0 additions & 113 deletions
This file was deleted.

0 commit comments

Comments
 (0)