comparison · c_e57094c6229a (tommy-mor) vs c_b8e80699547c (tommy-mor)
Side A is an integrated, working change: it wires an explicit user-triggered fetch action through events, reducer, HTML UI, event-log replay, and tests (including a fixture and integration test), fitting the existing architecture. Side B adds a standalone, unintegrated `reddit.rs` file (not even placed in server/src or referenced by any module) using different dependencies (governor, anyhow) never added to Cargo.toml, making it dead, disconnected code with no real integration or lasting value.
Commit A delivers an integrated, event-sourced Reddit import path (EntityImported + full payload storage/replay, explicit UI fetch control, configurable API bases, force-bypass cache, fixtures + end-to-end mock test) that replaces auto-fetch on browse and wires into the reducer/state/HTML layers. Commit B only drops an unintegrated standalone reddit.rs client with rate-limiter wrappers and Serde types, adding no wiring, persistence, or UI value to the project.
Side A integrates Reddit entity import into the existing application: it replaces implicit fetches with an explicit UI action, persists full API payloads via a new EntityImported event, replays them into state, adds configuration and dotenv support, and includes unit and integration tests. Side B is largely a standalone Reddit client module with typed models and rate limiting, but it is not connected to the rest of the project in the patch, so its lasting project impact is much lower despite its size.
comparison · c_b8e80699547c (tommy-mor) vs c_a3b1b1967afc (tommy-mor)
Side A adds a substantial, working Reddit API client module with rate limiting, typed response models, and error handling that provides concrete, reusable functionality for the project. Side B merely deletes a planning document (PLAN.md), which is a design roadmap rather than functional code, offering no direct lasting implementation value even though it may reflect completed work described elsewhere.
Commit A adds a complete, production-shaped RedditClient (rate limiting, fetch helpers, and carefully deserialized Post/Comment types with helpers), which is lasting executable value. Commit B only deletes the PLAN.md design doc after it was finished, contributing no new code or bugfix.
Side A adds a substantial new Reddit API client with built-in rate limiting, HTTP request handling, structured response types, custom serde deserialization, and helper methods for working with posts and comments, providing reusable project functionality. Side B only deletes a planning document, removing design documentation without adding or improving runtime behavior.
comparison · c_88200cfa5c4d (tommy-mor) vs c_b8e80699547c (tommy-mor)
Side A fixes real clippy warnings, restores a lost test (missing #[test] attribute meant it never ran), and applies small correctness cleanups integrated into the existing codebase. Side B adds a standalone, unintegrated reddit.rs file (not wired into any module or Cargo.toml shown) that appears unrelated to the project's actual domain, with a vague commit message ('nice') indicating low deliberate value.
Side B adds a full Reddit API client (~420 lines) with rate limiting, typed serde models, and error handling—substantial new capability—whereas Side A is mostly mechanical clippy/style nits (let-pattern rewrites, unnecessary refs, map_or→is_some_and) plus a missing #[test] attribute and a dead_code allow. Line count favors B because the change is real surface area, not formatting churn.
Side B adds a substantial new Reddit API client with rate limiting, request methods for multiple Reddit endpoints, structured response types, custom deserialization, and helper APIs, representing a significant new capability. Side A is almost entirely Clippy-warning cleanup and minor test maintenance, with its only functional change being adding a missing #[test] attribute and allowing dead code in shared test helpers; these are useful but comparatively small and mostly non-functional.
comparison · c_b8e80699547c (tommy-mor) vs c_c534b41e8607 (tommy-mor)
Side A adds a substantial, functional Reddit API client module with rate limiting, typed response structures, and error handling—real, reusable infrastructure. Side B merely deletes a dead/broken test function to silence a warning, a trivial cleanup with negligible lasting value compared to A's new functionality.
Side A adds a full RedditClient module (~420 lines) with rate limiting, multiple API endpoints, typed post/comment models, custom deserializers, and helper extractors—substantive lasting feature code. Side B only deletes one unused, non-#[test] helper that triggered a warning, a trivial cleanup with negligible project impact.
Side A adds a complete Reddit API client module with rate limiting, HTTP request handling, structured serde models for Reddit responses, custom deserializers, and helper methods for working with posts and comments, providing significant new functionality. Side B only removes an unused test function that was generating a warning, which is a minor cleanup with little lasting impact on the project's capabilities.
comparison · c_7ec67b9cef2c (tommy-mor) vs c_b8e80699547c (tommy-mor)
Side A adds a real, integrated module (`routing.rs` with `RouteContext`) wired into `html/mod.rs` and exported for use, plus a planning doc that gives concrete direction for a large refactor. Side B drops a large standalone `reddit.rs` at the repo root with no module wiring or Cargo.toml integration shown, making it likely dead/orphaned code that doesn't demonstrably compile into the project. Side A's contribution is smaller but actually lands as usable, integrated code plus useful documentation, while Side B is unintegrated bulk.
A lands project-aligned architecture: a concrete RouteContext API wired into server HTML plus a detailed ItemId migration plan tied to existing types/reducer/routing. B adds a sizable but unintegrated root-level reddit.rs client with no crate wiring or call sites, so it is less clearly lasting product value.
Side B adds a substantial, functional `reddit.rs` implementation: a rate-limited Reddit API client, HTTP error handling, serde models for listings/posts/comments, custom deserializers, and helper methods for extracting typed data. Side A mostly introduces a planning document plus a thin `RouteContext` wrapper around `ThreadNav` that re-exports existing routing behavior, providing architectural direction but little immediate functional change.
comparison · c_b8e80699547c (tommy-mor) vs c_16438843de8f (tommy-mor)
Side B adds several genuinely integrated, distinct project pieces (deployment config via Dockerfile/fly.toml, a working async EventLog with corruption handling, a persistent ViewStore with debounced disk flushing, and a Clojure deps.edn), each solving a real infrastructure/persistence need. Side A is a single self-contained Reddit API client that is reasonably well structured but is a single-purpose module whose value is more speculative/isolated, with less evidence of integration into the rest of the system.
Side A delivers a complete, well-engineered Reddit API client (rate limiting via governor, full serde types for posts/comments, custom deserializers, and extraction helpers) that is directly usable and lasting application logic. Side B adds necessary but thinner infrastructure (Dockerfile/fly.toml boilerplate plus simpler EventLog and ViewStore modules), which supports running the service yet contributes less distinctive design substance.
Side A introduces a substantial Reddit API client with built-in rate limiting, HTTP request handling, typed serde models for posts/comments, custom deserializers, and reusable helper methods, forming a coherent new subsystem. Side B adds useful infrastructure such as Docker/Fly deployment files plus persistent event logging and view counting, but much of the patch is operational configuration, and the new code is narrower in scope than the complete API client added in Side A.
comparison · c_b8e80699547c (tommy-mor) vs c_6864b1ca8ce6 (tommy-mor)
Side A adds a complete, functional Reddit API client with rate limiting, typed response models, and robust error/status handling—new capability with real design decisions. Side B is purely cosmetic CSS polish (padding, colors, focus outlines) duplicated across two theme files, improving visual consistency but adding no functional or structural value to the codebase.
A adds a full Reddit API client module (rate limiting, endpoints, typed serde models, and response helpers)—core reusable functionality. B only tweaks CSS for vote/pin controls and themes (padding, borders, focus rings), which is lasting polish but not architectural value.
Side A adds a new Reddit API client module with rate limiting, HTTP request handling, structured serde models for Reddit responses, custom deserializers, error handling, and helper methods for working with posts and comments. Side B is limited to CSS refinements for the voting and ontology UI (spacing, colors, focus states, layout, and theme overrides), which improve presentation and accessibility but do not add comparable core functionality.
comparison · c_28dfd8015c8a (tommy-mor) vs c_b8e80699547c (tommy-mor)
Side B adds a substantial, functional Reddit API client with rate limiting, typed response structs, and custom deserializers—new working functionality that the project can build on. Side A is a small, useful config simplification (kaocha test discovery), but its scope and impact are much narrower than a full client module, even though it is cleaner and better-described than B's terse commit message.
B adds a full Reddit API client (rate limiting, typed post/comment models, response helpers) that is substantive new capability, whereas A only rewrites tests.edn to a single auto-discovered suite—a useful but small maintainability tweak. Line count alone does not decide it; B’s patch is real product surface with lasting structure, not churn.
Side A makes the project's test configuration self-maintaining by replacing hand-enumerated test namespaces with a single auto-discovered `^test\..+` suite, ensuring new tests run automatically without updating `tests.edn` and reducing future maintenance. Side B adds a large new `reddit.rs` client and data model, but the patch only introduces a standalone file with no visible integration into the project, so its lasting project impact is less certain from the changes shown.
comparison · c_f6d0fed9bf9a (tommy-mor) vs c_b8e80699547c (tommy-mor)
Side A establishes the actual core architecture of the project—vote reducer with rank centrality math, parser graph, form templating, and vote UI routes—complete with substantive tests and real bugfix rationale (e.g. the rank-centrality convergence fix referencing issue #146). Side B is a single self-contained Reddit API client wrapper, useful but narrower in scope and lacking tests or integration with the rest of the system shown in Side A's diff. Side A's breadth and depth of durable, load-bearing logic outweighs Side B's isolated utility module.
Side A seeds the project's core lasting systems (rank-centrality with #146 regression tests and connected components in ranking.rs, full event-sourced ReducerState/GroupState in reducer.rs, the graph-based Reddit URL parser with extensive keystroke-flow tests, form $form template fill, HtmlUiAction, and the complete vote-compare page/UI), whereas Side B only adds a single clean but narrower Reddit HTTP client with rate limits and serde types. A's volume includes some pasted shell noise and note files, but the real algorithms, state machine, and UI plumbing dominate lasting value over B's useful-but-peripheral fetch layer.
Side B adds a cohesive, reusable Reddit API client with built-in rate limiting, structured response types, robust serde deserialization, and explicit handling for common API errors, providing infrastructure that is likely to be reused across the project. Side A contains a large amount of code, but it mixes speculative design documents with implementation and even includes accidental terminal transcript text embedded in source files (for example at the start/end of forms.rs and ranking.rs), which would undermine correctness despite the breadth of functionality.
comparison · c_b8e80699547c (tommy-mor) vs c_1c1c8e7a2de8 (tommy-mor)
Side B is an integrated, real feature: it adds a CLI 'room create' command, wires it through RPC/server/reducer, simplifies the room model (removing unused ThreadVisibility complexity), and updates tests/docs consistently across the codebase. Side A is a standalone, seemingly unused reddit.rs API client with no evidence of integration into the rest of the project, making its lasting value speculative at best.
B delivers an integrated, user-facing feature (CLI `room create` + RPC path) plus a lasting domain simplification (drop ThreadVisibility/RoomState, rooms as HashSet of private shortid/slug ids only, with matching test/doc updates). A adds a large standalone Reddit client module that is well-structured but unwired and orthogonal to the core room/forum model shown in the rest of the tree.
Side A adds an entire Reddit API client with built-in rate limiting, structured request/error handling, comprehensive serde models for Reddit posts/comments, and helper methods for extracting typed data, providing substantial new functionality. Side B mainly exposes an existing room-creation RPC through the CLI, updates documentation, and simplifies the server by removing the unused room visibility field and changing room storage from a map to a set; these are useful refinements but much smaller in lasting functional impact.
comparison · c_b8e80699547c (tommy-mor) vs c_c25451965a7f (tommy-mor)
Side B fixes a real, deployed bug (hardcoded staging URLs breaking custom hosts/OAuth redirects) by centralizing base-URL logic in a util function and updating deploy CI, touching multiple live modules consistently. Side A merely adds a new, unused reddit.rs client module with no evidence of integration into the actual project (this project appears to be a Clojure/JS app, making the Rust file's relevance and lasting value unclear).
Side A adds a complete, production-ready Reddit API client (rate-limited requests, typed serde models for posts/comments/listings, custom deserializers, and helper extractors) that forms lasting foundational infrastructure. Side B only consolidates duplicated hostname logic into a shared util, switches deploys to staging, and makes frontend origins dynamic—valuable correctness fixes but narrower in scope and impact.
Side A introduces an entire Reddit integration layer: a rate-limited HTTP client, multiple API endpoints, structured serde models for Reddit responses, custom deserializers, error handling, and helper methods for working with posts and comments. Side B improves configuration by centralizing base-URL generation, replacing hardcoded callback URLs with a shared HOSTNAME-based utility and window.location.origin, and changing the deployment workflow to staging, but its impact is more localized.
comparison · c_b8e80699547c (tommy-mor) vs c_fc17a4aa31e6 (tommy-mor)
Side B is a targeted, integrated fix that moves the delete button into the existing ingest header, refactors the shared post_header_meta helper, and updates CSS in two real theme files, all clearly wired into the running app. Side A drops a large standalone reddit.rs file at the repo root with no Cargo.toml/mod wiring shown, reading like a generic boilerplate API client dump rather than an integrated, exercised part of the codebase.
A adds a full Reddit API client (rate limiting, typed listing/post/comment models, response helpers)—foundational capability. B only relocates an existing delete control in the forum header and tweaks related CSS, a small UI polish with far less lasting scope.
Side A adds an entirely new Reddit API client with rate limiting, request handling, structured response types, custom serde deserializers, and helper methods for working with posts and comments, introducing substantial reusable functionality. Side B mainly refactors the post header to relocate the delete button and updates CSS flex layout to support the new placement, which is a useful UI improvement but much narrower in long-term impact.
comparison · c_b8e80699547c (tommy-mor) vs c_5696b828c728 (tommy-mor)
Side A adds a standalone reddit.rs API client that appears unintegrated into the project (no evidence of wiring into the main app, generic boilerplate that could apply to any project), with a vague 'nice' commit message suggesting low intentionality. Side B is a coherent, well-documented refinement of the project's core identity/wire-format design across DSL.txt, GUIDE.sorter, and plan.md, fixing a real inconsistency (removing @ from wire identity) that affects how the actual system's API and DSL parser behave, providing lasting clarity for future contributors.
A adds a full Reddit API client (rate limiting, HTTP handling, and typed post/comment serde models with helpers)—substantial reusable runtime code. B only realigns docs (DSL.txt, GUIDE.sorter, plan.md) on wire identity without @; useful consistency, but no behavioral or structural code change.
Side A adds a substantial new `reddit.rs` module implementing a reusable Reddit API client with rate limiting, HTTP request handling, structured serde models for posts/comments, custom deserializers, and helper methods for extracting typed data. Side B improves documentation by aligning the DSL and API identity conventions (removing `@` from wire formats, updating CLI examples, and clarifying bearer/delegate behavior), but it does not change runtime behavior or project capabilities.
comparison · c_b8e80699547c (tommy-mor) vs c_92734e554a25 (tommy-mor)
Side A adds a substantial, self-contained Reddit API client module with rate limiting, typed response models, custom deserializers, and helper methods—real functional code with lasting utility. Side B is a small CI tweak plus deletion of two passing test cases (with no clear justification), which reduces test coverage rather than adding value.
A adds a full Reddit API client module with rate limiting, typed serde models, error handling, and extraction helpers—substantial lasting feature code. B only bumps Node in CI, drops an npm upgrade step, and deletes two obsolete unit tests, which is minor cleanup.
Side A adds an entirely new Reddit API client with built-in rate limiting, HTTP request handling, response/error processing, strongly typed serde models, custom deserializers, and helper methods for working with posts and comments, representing significant new project functionality. Side B only updates the GitHub Actions Node.js version, removes an npm upgrade step, and deletes a couple of obsolete tests, which are comparatively small maintenance changes.
comparison · c_b8e80699547c (tommy-mor) vs c_cf0a514b261a (tommy-mor)
Side B is a small, precise bugfix that removes dead/redundant logic in a live reducer and updates the corresponding test with correct reasoning, improving code clarity and correctness in production code. Side A is a large, unintegrated new file (reddit.rs) with no evidence of being wired into the rest of the codebase, tests, or build, making its lasting value speculative compared to B's verified, real correctness fix.
A adds a full RedditClient module (rate limiting, request helpers, and robust serde types/deserializers for posts/comments), which is substantial lasting infrastructure. B only deletes a redundant zero-ratio early-return already enforced upstream and tweaks the related test, a correct but minimal dead-code cleanup.
Side A adds a substantial new Reddit API client with rate limiting, HTTP request handling, response/error processing, typed serde models, custom deserializers, and helper methods for working with posts and comments, introducing significant reusable functionality. Side B is a targeted cleanup that removes a redundant zero-ratio guard in the reducer and updates the test to reflect existing behavior where zero-weight edges are already skipped, which is a useful but much smaller maintenance improvement.
comparison · c_b3cb2762569d (tommy-mor) vs c_b8e80699547c (tommy-mor)
Side A performs a real integration: it removes a dead legacy parser, decouples the parser from UI types via a new parser_action module, adds a parser_render module wired into the live HTML endpoint, updates JS for tab-completion/live queries, and adds passing integration/smoke tests exercising the new panel. Side B merely drops a large standalone reddit.rs file at the repo root with no lib.rs module wiring, no call sites, and no tests shown, making it effectively unintegrated/dead code in this diff.
Side A delivers lasting product value by integrating the full Reddit URL graph parser into the live server (new ParserAction types, HTML morph panel + render paths, ParseQuery RPC, debounced JS input/tab/click completion, home-page wiring, and integration/smoke tests), whereas Side B only drops an unwired reddit.rs API client stub with no call sites, build wiring, or tests.
comparison · c_b8e80699547c (tommy-mor) vs c_7ca21f5e83a8 (tommy-mor)
A adds a full Reddit API client (rate limiting, multiple endpoints, typed Post/Comment models, custom deserializers, and extraction helpers)—lasting production infrastructure. B only adds one browser E2E test for the pool vote loop; valuable regression cover, but narrower and non-product code versus A’s reusable design.