Polish pass closing every open issue against the tool surface (18
issues). No breaking changes — additive params default to existing
behavior; format upgrades preserve previously-rendered fields.
Added:
- order: 'recent' | 'oldest' on bill_lookup and roll_votes list.
bill_lookup uses upstream ?sort=updateDate; roll_votes reverses
client-side (upstream ignores sort).
- Chamber inference on committee_lookup — get/bills/reports/nominations
derive chamber from the committeeCode prefix.
- Domain renderers: renderMemberDetail, renderRollVoteDetail,
renderNominationListItem/Detail, renderCommitteeListItem,
renderCommitteeReportListItem, renderAmendmentItem,
renderBillTextItem, renderBillSubresourceSummaryItem.
- Parent-nomination partitioned-form hint — surfaces in detail
rendering and in empty sub-resource results, pointing callers at
PN###-1 / -2 / ….
- Opt-in emptyHint on renderList — per-formatter recovery text
instead of one hardcoded sentence.
Fixed:
- normalizeCrsReport: dedupe relatedMaterials by URL, prepend https
to schemeless `url`.
- normalizeCommitteeReportSubresource: rewrite non-ISO updateDate
("YYYY-MM-DD HH:MM:SS+00:00") to ISO Z form.
- fetchList truncates to limit — /bill/{c}/{t}/{n}/text returns
limit+1 upstream.
Changed:
- stripHtml preserves paragraph/line breaks by default; inline
callers pass { inline: true }. Bill summaries render with
paragraph structure intact.
- formatMembers dispatches per-row for mixed bill+amendment lists.
- formatNominations renders nominationType as "Civilian"/"Military".
- formatCommitteeReports list uses citation-first heading.
- renderCrsReportItem omits the summary line when absent.
- bill_lookup, senate_nominations, enacted_laws tool descriptions
tightened to match actual upstream semantics.
Closes #4, #5, #6, #7, #9, #13, #14, #15, #16, #17, #18, #19, #20,