comparison · c_8fdd9b86c77f (tommy-mor) vs c_9e1ff4fc0186 (tommy-mor)
Commit A makes small but user-visible changes: it removes redundant UI elements from the vote page and fixes the vote slider gradient logic so the highlighted side matches the selected winner. Although labeled as 'nits', it changes application behavior and presentation. Commit B is dominated by workspace-wide rustfmt reformatting with a few tooling improvements (pinning rustfmt/clippy, adding VS Code settings, and a minor CSS cleanup). Those changes improve developer experience and consistency but have much less impact on the project's functionality.
Commit A is a small cleanup: removing a few UI elements and tweaking CSS gradients. Commit B, while largely non-functional, applies workspace-wide formatting, fixes lint/tooling issues, pins toolchain components, adds editor configuration, and cleans up duplicated CSS. These changes significantly improve maintainability, consistency, and developer experience across the entire project, making it far more impactful overall.
Commit B performs a workspace-wide rustfmt run affecting many source files, improves code consistency, pins rustfmt and clippy in rust-toolchain.toml to stabilize tooling, adds VS Code configuration for correct rust-analyzer toolchain usage, and fixes/cleans related code and CSS. This impacts a large portion of the codebase and developer workflow. Commit A is a small UI/CSS tweak and removal of some markup/functions labeled as 'nits', with limited scope. Therefore B contributes substantially more overall.
comparison · c_9e1ff4fc0186 (tommy-mor) vs c_c534b41e8607 (tommy-mor)
Commit A affects the project broadly by standardizing formatting across the workspace, pinning rustfmt and clippy in the toolchain to improve reproducibility, adding editor configuration for rust-analyzer, and cleaning up a duplicate CSS rule. Although most code changes are mechanical formatting, it improves developer workflow and consistency across many files. Commit B only removes a single unused test function that produced a warning, which is a much smaller maintenance change.
Commit A makes widespread improvements across the codebase: workspace-wide formatting, tooling fixes (rustfmt/clippy pinning), editor configuration, minor CSS cleanup, and consistent code style updates in many files. While mostly non-functional, it meaningfully improves maintainability and developer experience. Commit B only removes a single test, which is a very minor change with negligible impact.
Side A makes extensive, repository-wide changes including running rustfmt across many files, reorganizing imports, reformatting large portions of the codebase, pinning rustfmt/clippy in rust-toolchain.toml, adding VS Code settings, and minor CSS cleanup. Although mostly formatting and tooling-related, it affects a substantial portion of the project. Side B only deletes a single test function, a very small and localized change. Therefore, Side A contributed significantly more.
comparison · c_8fdd9b86c77f (tommy-mor) vs c_9e1ff4fc0186 (tommy-mor)
Side B is a substantial, workspace-wide rustfmt pass plus real tooling fixes (pinning rustfmt/clippy components in rust-toolchain.toml, adding .vscode settings for rust-analyzer, and deduplicating a redundant CSS rule), improving consistency and dev workflow across the whole codebase. Side A is a tiny, narrowly-scoped 'nits' commit that removes some UI elements and swaps CSS gradient stop ordering, which is minor and even partially redundant with/overlaps B's cleanup of the same CSS block.
A makes targeted UI cleanups (removing unused vote_back_nav, redundant legend/scope copy) plus a concrete slider gradient direction fix in sorter.css. B is almost entirely rustfmt whitespace/import churn across durable/ and server/, with only minor lasting bits (toolchain components pin, vscode settings, one duplicate CSS merge) that do not outweigh the noise.
Side B mostly consists of workspace-wide rustfmt changes, but it also makes lasting tooling improvements by pinning the `rustfmt` and `clippy` components in `rust-toolchain.toml`, adding VS Code settings to ensure rust-analyzer uses the project toolchain, and removing a duplicate CSS rule. Side A is primarily UI cleanup, removing contextual text from the voting page and flipping slider gradient directions in CSS, which is comparatively cosmetic and less broadly valuable.
B adds lasting project hygiene by pinning rustfmt/clippy in rust-toolchain.toml and standardizing tooling (plus minor CSS rule cleanup), whereas A mainly removes UI elements (e.g., vote scope text, legend span, back nav) and tweaks gradient colors, which is largely cosmetic and potentially reduces functionality.
Side B pins `rustfmt` and `clippy` in `rust-toolchain.toml`, adds VS Code settings to enforce the project toolchain, and standardizes formatting across the workspace—improving reproducibility and developer experience long-term. Side A mostly removes small UI elements (e.g., deleting the vote scope paragraph and back-nav function) and tweaks CSS gradients, which are comparatively minor and cosmetic.
comparison · c_9e1ff4fc0186 (tommy-mor) vs c_c534b41e8607 (tommy-mor)
Side A is a genuine workspace-wide rustfmt normalization plus real config fixes: pinning rustfmt/clippy components in rust-toolchain.toml, adding .vscode settings for rust-analyzer, and fixing a broken duplicate CSS selector in sorter.css that had merged unrelated rules. Side B merely deletes a single dead/unused test function (which wasn't even annotated with #[test] and thus never ran), a trivial one-line cleanup with negligible lasting value compared to A's tooling and formatting consistency improvements.
A pins rustfmt/clippy in the toolchain (fixing broken installs), adds rust-analyzer settings, and removes a real duplicate CSS rule; those are lasting project hygiene. B only deletes one unused, non-#[test] helper that triggered a warning. The bulk of A is pure rustfmt noise, so the edge is modest.
Side A adds lasting tooling improvements by pinning the required `rustfmt` and `clippy` components in `rust-toolchain.toml`, configuring rust-analyzer to use the project toolchain, and cleaning up a duplicated CSS rule, while the vast majority of the remaining diff is mechanical formatting. Side B only removes an unused test-like function that was generating a warning, which is a minor cleanup with limited long-term impact.
Side A adds concrete maintenance value by pinning rustfmt/clippy in rust-toolchain.toml and configuring rust-analyzer, preventing toolchain drift, while most other changes are harmless formatting. Side B simply deletes a test (`parse_full_keeps_quoted_thread_title_statement_as_prose`), reducing coverage without replacing it.
Side A pins the Rust toolchain with required components in rust-toolchain.toml, adds VS Code settings to ensure rust-analyzer uses the project toolchain, and cleans up a duplicate CSS rule while running rustfmt across the workspace—improving build reproducibility and tooling reliability. Side B merely deletes a single unused test function in server/src/dsl.rs, removing coverage without adding functionality.
comparison · c_7ec67b9cef2c (tommy-mor) vs c_9e1ff4fc0186 (tommy-mor)
Side A introduces a substantive architectural artifact (RouteContext wrapper plus a detailed migration plan for ItemId/routing) that guides real future refactoring work, even if incomplete. Side B is almost entirely mechanical rustfmt/tooling churn (reformatting durable/* examples and tests, toolchain pinning, vscode settings) with only a trivial CSS dedup and no functional improvement, offering little lasting design value beyond formatting consistency.
A adds lasting design value: a concrete RouteContext API (routing.rs + re-export) and a detailed ItemId migration plan that stages real architecture work. B is almost entirely rustfmt churn across examples/lib plus minor toolchain/VS Code pins and a one-line CSS merge, with negligible lasting product substance.
Side A introduces a new `RouteContext` abstraction (`server/src/html/routing.rs`) and exports it from `server/src/html/mod.rs`, creating a centralized API for scoped URL generation (`item_href`, `thread_url`, room/public handling) that supports an ongoing architectural refactor. It also adds a detailed migration plan (`plan.md`) documenting the intended replacement of `CanonicalItemUrl` with `ItemId` and the phased implementation strategy, whereas Side B is overwhelmingly workspace-wide formatting plus tooling configuration (`rust-toolchain.toml`, VS Code settings) with only a minor CSS rule merge and no substantial behavioral change.
comparison · c_6a02ffb06a41 (tommy-mor) vs c_9e1ff4fc0186 (tommy-mor)
Side A fixes a real semantic issue (a silent unwrap_or(0) masking a should-never-happen case) and reconciles a 1-vs-0 indexing inconsistency across rpc.rs, garden.rs, and types docs, backed by new integration test assertions verifying the corrected indices. Side B is almost entirely rustfmt/tooling churn (reformatting examples, toolchain pin, .vscode settings) plus a trivial CSS dedupe, which is useful hygiene but contributes no functional or correctness value.
Commit A makes a real semantic fix: switches rank-history thread_post_index to consistent 0-based indexing matching /t/tag/N routes, replaces silent unwrap_or(0) with expect, drops the conditional UI hide, documents the contract, and adds integration assertions. Commit B is almost entirely rustfmt churn across examples and crates plus minor tooling (toolchain components, VS Code settings, one duplicated CSS rule merge), which adds little lasting design or correctness value.
Side A makes a semantic correctness change by treating `thread_post_index` as a guaranteed 0-based index, replacing silent `unwrap_or(0)` fallbacks with `expect(...)`, always rendering the post link, updating API/docs to distinguish 0-based URL indices from 1-based feed ordinals, and adding integration tests to lock in the behavior. Side B is overwhelmingly workspace-wide rustfmt reformatting plus tooling/editor configuration (pinning rustfmt/clippy, VS Code settings, minor CSS cleanup), with little lasting change to project behavior.
comparison · c_e4fb43f04791 (tommy-mor) vs c_9e1ff4fc0186 (tommy-mor)
Side A makes a real, targeted fix: removing a dead/unused CSS wrapper section in the vote-compare template and consistently restyling the ranking-number markers across three theme files, producing a concrete visible/behavioral improvement. Side B is almost entirely mechanical rustfmt/reformatting noise across many files plus minor tooling config (toolchain components, VS Code settings) and one small CSS dedup, which has some value (tooling reliability) but contributes little functional substance and is largely reformatting churn.
Side A removes an unnecessary vote-compare-shell wrapper from the HTML template and ships real cross-theme CSS for ontology ranking lists (larger tabular rank numbers, missing ol.ont-ranking-list rules in retro/craft). Side B is almost entirely mechanical rustfmt whitespace/import churn plus minor toolchain pinning and a duplicate CSS merge, which adds little lasting product value.
Side A makes a user-visible structural change by removing the unnecessary `vote-compare-shell` wrapper from the vote comparison page and updates theme CSS to implement consistent numbered ranking lists across the default, retro, and retro_craft themes with improved counter styling. Side B is overwhelmingly a workspace-wide rustfmt reformat plus tooling configuration (pinning rustfmt/clippy, VS Code settings, minor CSS rule merge), with little functional impact beyond development ergonomics.
comparison · c_9e1ff4fc0186 (tommy-mor) vs c_48aeaf9b52c3 (tommy-mor)
Side B fixes a real, subtle correctness bug in the ranking algorithm (wrong divisor causing bipartite oscillation on star topologies), grounds the fix in the cited paper's actual definition, and adds targeted Rust and Clojure regression tests/fixtures proving the fix. Side A is almost entirely rustfmt/whitespace churn plus a tiny CSS dedupe and toolchain pin, which is useful housekeeping but contributes no functional value and is mostly noise/formatting.
Commit B fixes a real correctness bug in the core Rank Centrality scoring (wrong d_max divisor causing bipartite oscillation and uniform scores on star topologies), aligns the math with the cited paper, and adds durable Rust + Clojure regression tests with fixtures. Commit A is almost entirely rustfmt whitespace/import churn plus minor tooling pins and a trivial CSS dedup, which adds negligible lasting product value.
Side B fixes a substantive correctness bug in `compute_scores_from_edges` by switching the Rank Centrality normalization from summed edge weights to the canonical degree-based `d_max`, preventing oscillating bipartite Markov chains and producing correct rankings for star topologies. It also adds targeted Rust and end-to-end regression tests with ranking fixtures, whereas Side A is overwhelmingly rustfmt-driven reformatting plus minor tooling changes (pinning rustfmt/clippy, VS Code settings, and a small CSS cleanup) with little lasting behavioral impact.
comparison · c_59974b9da42a (tommy-mor) vs c_9e1ff4fc0186 (tommy-mor)
Side A performs a genuine refactor, splitting a monolithic forum.rs into focused submodules (nav, ingest, room_members, new_thread, access) with clear responsibilities, which is a lasting structural improvement, plus adds a useful sample-fixture dev tool. Side B is almost entirely mechanical rustfmt churn across unrelated files (durable/*, server/*) with only a trivial CSS dedup and toolchain pin as real substance, offering little lasting design value beyond formatting consistency.
A modularizes the monolithic forum.rs into focused modules (nav, ingest, access, room_members, new_thread) with real structural clarity, plus a useful sampling fixture; B is almost entirely rustfmt churn across examples/libs plus minor toolchain/VS Code pins and one tiny CSS dedupe.
Side A performs a substantive architectural refactor by extracting major forum responsibilities into new modules (such as access, ingest, navigation, room members, and new-thread handling), introduces reusable helpers like ThreadNav and permission checks, and adds a useful profiling script for sampling fixture processes. Side B is overwhelmingly workspace-wide formatting plus tooling updates (pinning rustfmt/clippy, VS Code settings, minor CSS cleanup), with little functional impact beyond developer ergonomics.