- Rewrite Quick start to show `cargo install misses` and the new
`misses init` subcommand as the primary entry point
- Add a dedicated `misses init` section explaining binary mode
(build-time codegen via OUT_DIR, nothing committed) and library
mode (--lib: generated/ committed, misses-source feature to
rebuild, zero misses dependency for downstream users)
- Update project layout to include init.rs
- Add note that parse errors surface as compiler diagnostics via
into_compile_error() rather than panicking
https://claude.ai/code/session_01D2g6zGJsBeUEzxBb7AvFDt
`misses init [--lib] [dir]` scaffolds a new proc-macro crate that uses
misses as its build toolchain. Two modes are supported:
Binary mode (default):
The .mrs source files live in src/macros/ and are compiled to
$OUT_DIR at build time via a generated build.rs. The generated
Rust code is never committed — users must have misses installed
to build from source.
Library mode (--lib):
The generated code is committed to generated/ so downstream users
of the crate need no misses install at all. The .mrs source and
build.rs are still present for the library author, who can
regenerate via `cargo build --features misses-source`. The
misses-source feature makes misses an optional build-dependency
and gates the regeneration path in build.rs with #[cfg(feature)].
The command also teaches `main.rs` a proper subcommand dispatch so
that `misses <file.mrs>` (compile) and `misses init` are cleanly
separated.
https://claude.ai/code/session_01D2g6zGJsBeUEzxBb7AvFDt
The generated proc macro code was using .unwrap() for parse failures,
causing panics instead of emitting proper Rust compile errors. Replace
both unwrap calls with match expressions that call
e.into_compile_error().into() to surface parse failures as compiler
diagnostics in the generated proc macros.
https://claude.ai/code/session_01D2g6zGJsBeUEzxBb7AvFDt
- misses-rt: add Buffer/Markup HTML helpers, name/type helpers, parse_sections/parse_kv, and template AST
- codegen: add is_syn_keyword() — non-keyword idents in patterns now generate parse+compare instead of syn::Token![…]
- parser: split punct vs ident chars in literal pattern tokens so `props:` becomes two tokens
- examples: add component.mrs/.rs demonstrating named literal tokens and tt capture
- README: comprehensive guide covering .mrs syntax, running the compiler, misses-rt helpers, and examples
https://claude.ai/code/session_01Tppkab4eLsL21asHGjQJoF
- Move .mrs files into misses-compiler/examples/ alongside .rs runners
- Add lib.rs exposing parse/codegen for use by example binaries and main.rs
- Fix parser: #[attr] vs #[a => b] disambiguation (look for => before ])
- Fix parser: `for` keyword in `impl Foo for Bar` no longer triggers spread
(is_spread_for lookahead: must match `for <ident> in $<ident> =>`)
- Add derive_getters.mrs: getter methods via spread iteration
- Add make_id_type.mrs: newtype u64 wrapper with From impls, derive attrs
Run with: cargo run --example hello|derive_builder|declare_table|derive_getters|make_id_type
https://claude.ai/code/session_01Tppkab4eLsL21asHGjQJoF