comparison · c_ebc883667d61 (tommy-mor) vs c_bd76779bd7ed (tommy-mor)
Commit A performs a substantial structural refactor: it removes the obsolete monolithic forum module, establishes the directory-based module as the single source of truth, introduces multiple focused submodules, updates exports, and relocates large amounts of functionality without changing behavior. This resolves module ambiguity and improves maintainability. Commit B is a very small UI consistency fix, changing a disabled paginator element from a <span> to an <a href="#">. While useful, its scope and impact are minor compared with the broad architectural cleanup in commit A.
Commit A performs a major structural refactor: removes a 1400+ line monolithic file, introduces a modular architecture (multiple new modules like feed, views, paginator, profile, etc.), and reorganizes responsibilities across the codebase. This significantly improves maintainability, clarity, and extensibility. Commit B is a trivial UI tweak (changing a disabled span to an anchor). The impact difference is substantial.
Side A performs a major refactor: removing a 1400+ line monolithic file and reorganizing the forum HTML into a well-structured module hierarchy (feed, views, paginator, profile, morph handlers, etc.), significantly improving maintainability and clarity. Side B is a trivial markup tweak (changing a disabled span to an anchor). The scale and impact of A vastly exceed B.
comparison · c_bd76779bd7ed (tommy-mor) vs c_77729db919ab (tommy-mor)
Commit B introduces a substantial architectural change around URL canonicalization. It adds a new URL normalization subsystem (`url_rules`), integrates it into `ItemId`, updates parsing, parent/breadcrumb logic, Reddit URL handling, projection application, state validation, and adds a new dependency plus extensive test updates. It also changes the project's canonical identifier format to full HTTPS URLs and touches many core components. By contrast, commit A is a tiny HTML tweak that changes a disabled paginator control from a `<span>` to an anchor with `href="#"`, a localized UI adjustment with minimal impact.
Commit B introduces a comprehensive URL canonicalization system with new modules, dependency additions, and widespread changes across parsing, storage, tests, and Reddit integration logic. It fundamentally alters how IDs are handled and normalized throughout the codebase. Commit A is a minor HTML tweak changing a disabled span to a link, with negligible impact in comparison.
Commit B introduces a comprehensive URL canonicalization system (new url_rules module with engine and registry), adds a new dependency, refactors ItemId semantics across the codebase to use full canonical URLs, updates parsing, parent/breadcrumb logic, Reddit/YouTube normalization, event application, and adjusts extensive tests and state handling accordingly. It meaningfully changes core identity handling and architecture. Commit A is a trivial HTML change (span to disabled anchor). Therefore B contributes vastly more.
comparison · c_ebc883667d61 (tommy-mor) vs c_bd76779bd7ed (tommy-mor)
Side A resolves a real module-ambiguity bug (duplicate forum.rs vs forum/mod.rs) and cleanly splits a 1400-line monolith into cohesive submodules (feed, nav, ingest, views, page, paginator, etc.) with proper visibility and imports, materially improving maintainability. Side B is a one-line cosmetic tag change (span->a) with no functional or structural significance.
A removes a leftover 1400-line monolithic forum.rs sonearestmod forum` resolves cleanly to forum/mod.rs and keeps the split modules as the sole source—real structure and ambiguity fix. B only swaps a disabled paginator span for an anchor (href="#"), a one-line UI consistency tweak with negligible lasting impact.
Side A resolves a structural module issue by deleting the obsolete monolithic `server/src/html/forum.rs`, adding `forum/mod.rs`, and moving functionality into focused modules such as `feed.rs`, `views.rs`, `page.rs`, `paginator.rs`, `post_single.rs`, `profile.rs`, and `thread_morph.rs`, eliminating ambiguity so `mod forum` consistently resolves to `forum/mod.rs`. Side B only changes one disabled paginator element from a `<span>` to an `<a href="#">`, a minor markup adjustment with far less lasting architectural value.
A removes a 1400+ line monolithic `forum.rs`, resolves module ambiguity, and introduces a structured `forum/` module with separated concerns (feed, paginator, views, etc.), improving maintainability. B is a one-line change swapping a disabled `<span>` for an `<a>` in the paginator, a minor UI consistency tweak with limited impact.
Side A removes the 1400+ line monolithic `server/src/html/forum.rs`, introduces `forum/mod.rs`, and splits functionality into focused modules (`feed.rs`, `views.rs`, `profile.rs`, `thread_morph.rs`, etc.), resolving the duplicate module root ambiguity and significantly improving structure and maintainability. Side B is a minor HTML tweak changing a disabled paginator element from `<span>` to `<a href="#">`, which is negligible compared to the architectural cleanup in A.
comparison · c_bd76779bd7ed (tommy-mor) vs c_77729db919ab (tommy-mor)
Side B introduces a substantial, well-tested architectural change (a composable url_rules module for canonicalization, ItemId scheme changes to full URLs, updated call sites and tests, plus docs) that fixes real correctness issues in URL identity handling. Side A is a one-line trivial fix changing a disabled span to an anchor tag, of minor consequence.
Commit B introduces a real lasting design: ItemId becomes full canonical URLs, extracts composable url_rules (engine + per-domain registry for Reddit/YouTube normalization, breadcrumbs, parents), and updates path_types, reddit mapping, projection, and tests accordingly. Commit A is a one-line UI tweak swapping a disabled span for an a href="#" in the forum paginator with no design or bugfix impact.
Side B introduces a substantial URL canonicalization framework by extracting normalization into a new `url_rules` module, adopting canonical `https://` ItemIds, updating parsing, parent/breadcrumb logic, Reddit URL handling, event application, and adding tests for these behaviors. Side A only changes a disabled paginator control from a `<span>` to an `<a href="#">`, a minor UI tweak with far less lasting architectural impact.
Side B introduces a full URL canonicalization system (`url_rules` with parsing, normalization, and breadcrumbs) and integrates it across `ItemId`, event parsing, and Reddit handling, replacing ad-hoc string logic with a consistent design. Side A only swaps a disabled `<span>` for an `<a href="#">`, a minor UI tweak with little lasting impact.
Side B introduces a comprehensive URL canonicalization system (`server/src/url_rules/engine.rs`, `registry.rs`) and refactors `ItemId` to use canonical full HTTPS URLs, updating parent/breadcrumb logic, Reddit/Youtube normalization, and event parsing across the codebase. Side A merely changes a disabled paginator element from a `<span>` to an `<a href="#">`, a minor markup tweak with negligible architectural impact.
comparison · c_f6d0fed9bf9a (tommy-mor) vs c_bd76779bd7ed (tommy-mor)
Side A introduces substantial, working subsystems (rank-centrality ranking algorithm with regression tests, event-sourced reducer, form templating with $form holes, a composable URL parser, and vote-compare UI) that encode real design decisions and lasting logic, despite some stray copy-paste artifacts (shell prompts) in a couple of files. Side B is a single-line tweak changing a disabled `<span>` to an `<a href="#">` in a paginator, a trivial cosmetic/no-op fix with negligible lasting impact by comparison.
Side A seeds substantial core subsystems (ranking/centrality logic with tests, event reducer state machine, HTML vote-compare UI, form-template plumbing, parser graph, and test harnesses), which form lasting project foundation despite some pasted noise. Side B is a one-line cosmetic swap of a disabled paginator span to an anchor.
Side A introduces substantial new project infrastructure, including a client-side fetch/SSE UI layer, ranking and reducer logic, a parser with extensive tests, vote handling, UI action parsing, and supporting test scripts. Side B only changes a disabled paginator element from a <span> to an <a href="#">, a minor UI tweak with limited lasting architectural impact.
comparison · c_e4fb43f04791 (tommy-mor) vs c_bd76779bd7ed (tommy-mor)
Side A removes an unnecessary wrapper element/class, cleans up CSS duplication, and adds consistent, reusable ranking-list numbering styles across three theme files, representing real (if modest) UI/CSS improvements. Side B is a trivial one-line change swapping a span for an anchor tag with href='#', which is a minor/dubious fix (a disabled link pointing to '#' is arguably worse semantically than a span) with negligible lasting value.
A removes an unnecessary vote-compare-shell wrapper and lands real, cross-theme ranking-list typography (counters, flex, tabular nums) in default/retro/retro_craft CSS. B only swaps one disabled paginator control from span to a href="#", a tiny consistency tweak with little lasting impact.
Side A makes broader UI improvements: it removes an unnecessary wrapper around the vote-compare content and updates ontology ranking list styling across multiple themes by adding consistent numbered-list counters, typography, and alignment (`::before`, `counter-increment`, `font-variant-numeric`, etc.). Side B only changes a disabled paginator control from a `<span>` to an `<a href="#">`, a small markup adjustment with much narrower long-term impact.
comparison · c_88200cfa5c4d (tommy-mor) vs c_bd76779bd7ed (tommy-mor)
Side A fixes a genuinely broken test (missing #[test] attribute meant the test never ran), cleans up clippy warnings across multiple files, and adds a documented dead_code allowance for shared test helpers—concrete, verified improvements to code quality. Side B is a one-line tweak changing a disabled span into an anchor tag with a dead '#' href, a trivial and arguably questionable change with minimal lasting value.
A enables a previously dead ui_action test with #[test], plus targeted clippy/hygiene fixes (let-else patterns, is_some_and, dead_code allow on shared test helpers). B is a one-line markup swap of a disabled paginator control from span to a href="#", with no functional or design depth.
Side A mostly contains Clippy-driven cleanups, but it also fixes a substantive oversight by adding the missing #[test] attribute so a UI action test actually runs, and introduces a type alias to simplify a complex return type without changing behavior. Side B only changes the disabled paginator control from a <span> to an <a href="#"> element, a small UI/markup tweak with much narrower long-term impact.