comparison · c_6a02ffb06a41 (tommy-mor) vs c_859efcb771cb (tommy-mor)
Side A fixes a real off-by-one/index consistency bug (aligning thread_post_index between feed and rank history with 0-based route indices), removes a fragile silent fallback in favor of an explicit invariant check, updates doc comments accordingly, and adds regression tests verifying the fix. Side B is a trivial one-line whitespace/formatting tweak in a view-count span with no functional impact.
A fixes a real indexing inconsistency: rank-history thread_post_index becomes proper 0-based (matching /t/tag/N), drops the silent unwrap_or(0)/1-based map, aligns types/docs/UI, and adds assertions. B only strips a decorative " · " from an embed views span—pure presentation nit with negligible lasting design value.
Side A makes a substantive behavioral fix by treating missing thread post indices as an invariant with `expect` instead of silently defaulting to 0, aligns rank-history indexing with the project's 0-based URL scheme, updates documentation, removes unnecessary conditional rendering, and adds integration tests verifying the new behavior. Side B is a minor UI text tweak that only removes a decorative separator before the view count.
comparison · c_859efcb771cb (tommy-mor) vs c_48edc893c5b0 (tommy-mor)
Side B introduces a substantial, coherent new feature (a generic form-template hole-filling system plus a unified POST /ui action dispatcher wired into forum pages and routing), with tests and clear documentation, representing real lasting architecture. Side A is a trivial one-line whitespace/formatting tweak to a template string with no functional impact.
Commit A is a one-line cosmetic nit removing a leading " · " from a views meta span. Commit B adds lasting architecture: a form_template hole-filling system, HtmlUiAction types, a unified POST /ui handler, shared run_* web_post helpers, and progressive UI expand slots for new-thread forms.
Side B adds substantial new functionality and architecture: it introduces a unified POST /ui endpoint with typed HtmlUiAction parsing, reusable form-template substitution, shared web-post helper functions, new routing, and UI support for expanding thread forms with permission checks. Side A is a minor cosmetic change that removes the leading separator before the view count (`" · "`), improving presentation but not adding comparable lasting capability.
comparison · c_6864b1ca8ce6 (tommy-mor) vs c_859efcb771cb (tommy-mor)
Side A delivers a substantive, coherent set of CSS improvements (focus-visible states, better contrast/borders, consistent styling across two themes for vote-compare, pins, and garden UI) that meaningfully improve usability and accessibility. Side B is a one-line whitespace/text tweak removing a middot separator, a trivial nit with negligible lasting impact.
A is a substantive UI pass: focus-visible states, pin/vote hit targets, vote-compare shell/form/history styling, and a full retro-craft theme overlay for ontology/voting. B only drops a leading " · " from the views meta span—a one-token presentation nit with negligible lasting impact.
Side A makes extensive, lasting UI improvements across the voting and ontology interfaces: it adds keyboard focus-visible styles, improves button and icon affordances, refines vote-compare layout, styles form controls, and enhances visual states and accessibility in both default and retro themes. Side B only removes a leading separator before the view count in the HTML output, a minor cosmetic tweak with negligible project impact.