-
v.1.0.0-beta.1 Pre-release
released this
2026-07-05 18:57:37 +02:00 | 235 commits to main since this releaseRelease Notes - v1.0.0-beta.1
The Documentation Overhaul & Perfecting Parity
Welcome to the second beta of Gram! Since the last release which introduced the CLI and completed the initial ecosystem, my primary focus has been entirely on one massive, long-overdue task: The Documentation.
I've completely rewritten the documentation from scratch and migrated it to Vitepress. During this exhaustive review of every single Gram feature, I uncovered several inconsistencies and edge-case bugs in how the core engine behaved compared to how it should behave.
Taking the time to fix all of these means we've now achieved total parity between the documentation and the engine. What you read is (hopefully) exactly what Gram does.
On a more personal note, the documentation is now fully translated into French, my native language. While this might not fundamentally change the project for most users, it was an important milestone for me to have the language explained in my own mother tongue!
The New Integrated Playground
The legacy standalone playground is gone. In its place is a brand-new, advanced Vue 3 Playground integrated directly into the Vitepress documentation site.
It natively uses the official VSCode grammar (via Shiki) to ensure 100% consistency with your local environment. It's also been substantially upgraded with new features, letting you instantly test recipe scaling, Baker's Math etc. Additionally, the HTML Preview view has been completely redesigned. It is now much more pleasant to read and provides significantly more information at a single glance.You can try it out here: https://abiwab.codeberg.page/gram/play
A Much Smarter Scaling Engine
One of the biggest internal upgrades in this release is the new centralized
ScaleEngineinside@gram/kitchen. Scaling recipes (--scale) and computing Baker's Percentages is now vastly more robust and safe.
The engine now validates your scale targets before computing anything—it will explicitly reject fixed ingredients (@=), relative quantities, or mismatched units with a clear error instead of silently returning corrupted math. A sub-recipe's own total (e.g. "2 lemons") is now a valid scale target itself!
What's New & What's Changed
Culinary Terminology Alignment (Breaking Changes)
To make Gram more intuitive for cooks and less confusing for developers, I've aligned the internal API and terminology with actual culinary concepts:
- Timers: We no longer use computer-science terms like "Synchronous" and "Asynchronous".
- Regular timers (
~{10min}) are now Active timers (requires the cook's attention). - Background timers (
~&{2h}) are now Passive timers (idle time like resting or baking). - Note for Tool Builders: The AST node property
isAsynchas been renamed toisPassive, and CSS classes have been updated accordingly.
- Regular timers (
- Physical Engine: Internal analyzer APIs have been renamed for clarity. For example,
enableMassNormalizationis nowenableMassStandardization, andenableYieldManagementis nowenableYieldCalculation.
Syntax Enhancements
- Bare Preparations: You no longer need to add empty quantity braces to attach a preparation to an ingredient or cookware. You can now write
@butter(melted)or#pan(20cm)completely naturally.
Under the Hood Bug Fixes
- Shopping List Aggregation:
unit_weightconversions (e.g.@avocado{1}) are now handled perfectly with Yield calculations. The shopping list now correctly regroups entries by canonical IDs—merging aliased ingredients (e.g.,beurreandbutter) and cross-unit quantities (e.g.100gand1 cup) into a single gram total! - Baker's Math Fixes: Fixed the
@*auto-detection and added strict safety checks to prevent relative-quantity ingredients from being used as the 100% base.
Oh, and a New Logo! 🍊
You might have noticed Gram now sports a shiny new orange logo. Why an orange? It's actually a nostalgic callback to the very first programming project I built many, many years ago. I recently stumbled upon that old asset and figured it was a perfect fit for a food-related project like this one. Simple as that!
What's Next?
The documentation was the last major mountain to climb before V1, and I'm thrilled it's finally done.
Moving forward, my focus will shift almost entirely to bug hunting and optimizations. I might slip in one more small feature—something in the same vein as "relative quantities"—but I haven't decided yet whether that will land before the stable V1 release or in a future update.
To the massive crowd of exactly zero people currently using this alongside me: thank you for your unwavering support! I know I'm basically talking to myself in an empty room right now since the project is still very under the radar, but building Gram has been an incredibly fun ride. If you somehow stumbled upon this repository, feel free to drop a star, break the code, and say hi. Cheers! 🤙
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Timers: We no longer use computer-science terms like "Synchronous" and "Asynchronous".