chore(release): prepare v0.2.0 - #20
Conversation
|
Warning Rate limit exceeded
You’ve run out of usage credits. Purchase more in the billing tab. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (3)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Added
qrkit/render/ascii:AsciiOptionsopaque type plusdefault_options/0,with_margin/2,with_inverse_option/2,to_string_with/2, andto_string_compact_with/2— mirroring the builder-style options shapeqrkit/render/svgalready exposes (svg.default_options |> svg.with_margin(2)). The new functions let terminal callers tighten the quiet zone for debug dumps, fixture diffs, and inline-doc panels without giving up the ISO/IEC 18004 4-module default for camera-scannable output. Existingto_string/1,with_inverse/1, andto_string_compact/1keep the 4-module default and are unchanged at the API level. (feat(render/ascii): expose with_margin (and/or options builder) like the SVG renderer #8)Fixed
qrkit/content: comprehensive RFC compliance pass for the iCalendar and vCard renderers (issues content.event_to_string produces malformed iCal for negative start_unix / end_unix #9–content.email leavestoparameter unescaped, producing broken mailto URIs for ?/&/#/space in addr-spec #17).vcard_to_stringandevent_to_stringnow terminate lines with CRLF (\r\n) per RFC 5545 §3.1 / RFC 2426 §2.1, not LF-only — strict consumers (Apple iOS Calendar in MIME contexts, Outlook drag-and-drop,python-icalendar,node-vcard) accept the output. (content uses LF (not CRLF) line terminator for iCal & vCard payloads (RFC 5545 §3.1 / RFC 2426 §2.1) #12)CRLF<space>continuation per RFC 5545 §3.1 / RFC 2426 §2.6. Folding is grapheme-aware so multi-byte UTF-8 sequences are never split. (content does not fold long iCal & vCard content lines at 75 octets (RFC 5545 §3.1 / RFC 2426 §2.6) #13)escape_ical/escape_vcardstrip raw\randNULfrom TEXT values (RFC 5545 §3.3.11 / RFC 2426 §2.4.2 forbid raw control characters; CR in particular emulated CRLF and broke the document). (content escape helpers leave raw CR / NUL in iCal & vCard values (RFC 5545 §3.3.11 / RFC 2426 §2.4.2) #11)event_to_stringnow emits the RFC-requiredPRODID(VCALENDAR §3.7.3),UID, andDTSTAMP(VEVENT §3.6.1).UIDis a deterministic synthesis of the event's title hash + start + end so the same event produces the same UID across runs;DTSTAMPdefaults tostart_unixsince no clock is available in a pure rendering function. (content.event_to_string omits RFC 5545-required UID, DTSTAMP, and PRODID properties #14)vcard_to_stringalways emits the RFC 2426 MANDATORYNandFNproperties (§3.1.1 / §3.1.2) — when the caller did not callwith_name, both are emitted with empty values (N:;;;;andFN:) so the structure is still spec-conformant. (content.vcard_to_string omits RFC 2426-required N and FN properties #15)event_to_stringinall_daymode now bumpsDTENDtostart + 1 daywhen the caller passedend_unix == start_unix, matching RFC 5545 §3.6.1's non-inclusive-end requirement for DATE-valued events. (content.event_to_string in all_day mode allows DTEND == DTSTART (RFC 5545 §3.6.1 non-inclusive-end violation) #16)event_to_stringhandles pre-epochunixvalues correctly by floor-dividing into days / seconds-of-day (Gleam's/and%truncate toward zero, which had let negative sub-day components leak into the formatted output). (content.event_to_string produces malformed iCal for negative start_unix / end_unix #9)event_to_stringclamps year to[1, 9999]so values beyond Y10K cannot break the RFC 5545 fixed-widthYYYYMMDDTHHMMSSZformat. (content.event_to_string emits 5-digit year for unix beyond Y10K (RFC 5545 §3.3.5 format break) #10)content.emailnow percent-encodes thetoaddr-spec along withsubjectandbody, so reserved characters (?,&,#, space) intono longer produce a malformedmailto:URI. (content.email leavestoparameter unescaped, producing broken mailto URIs for ?/&/#/space in addr-spec #17)