Conversation
commit f8e3854 Author: ssweber <57631333+ssweber@users.noreply.github.com> Date: Tue Jan 20 13:51:33 2026 -0500 update cell notes regardless commit 1625d4f Author: ssweber <57631333+ssweber@users.noreply.github.com> Date: Tue Jan 20 13:48:37 2026 -0500 more fixes commit dcead7e Author: ssweber <57631333+ssweber@users.noreply.github.com> Date: Tue Jan 20 13:22:37 2026 -0500 more changes commit 1a76543 Author: ssweber <57631333+ssweber@users.noreply.github.com> Date: Tue Jan 20 11:47:55 2026 -0500 Update IMPLEMENTATION_PLAN.md commit e04f7be Author: ssweber <57631333+ssweber@users.noreply.github.com> Date: Tue Jan 20 11:21:41 2026 -0500 renaming/ using new store commit 91dd1c8 Author: ssweber <57631333+ssweber@users.noreply.github.com> Date: Tue Jan 20 09:39:09 2026 -0500 more work commit 00de867 Author: ssweber <57631333+ssweber@users.noreply.github.com> Date: Tue Jan 20 08:36:00 2026 -0500 Update IMPLEMENTATION_PLAN.md commit 892791d Author: ssweber <57631333+ssweber@users.noreply.github.com> Date: Tue Jan 20 08:24:01 2026 -0500 Restore a few files that seem fine commit eec3694 Author: ssweber <57631333+ssweber@users.noreply.github.com> Date: Tue Jan 20 08:20:51 2026 -0500 delete 1st attempt commit ff57fd7 Author: ssweber <57631333+ssweber@users.noreply.github.com> Date: Tue Jan 20 07:53:53 2026 -0500 remove unneeded dev deps commit 6f6ec19 Author: ssweber <57631333+ssweber@users.noreply.github.com> Date: Tue Jan 20 07:53:35 2026 -0500 lint/sort commit 90d1359 Author: ssweber <57631333+ssweber@users.noreply.github.com> Date: Mon Jan 19 15:04:46 2026 -0500 Create IMPLEMENTATION_PLAN.md commit 22b19a1 Author: ssweber <57631333+ssweber@users.noreply.github.com> Date: Mon Jan 19 14:32:44 2026 -0500 Phase 1
… Immutable Base + Overlay Model
Move block_color out of the frozen AddressRow dataclass into a separate mutable dictionary in AddressStore. This eliminates unnecessary row recreation when block colors change and keeps derived display state out of the undo/redo system. Changes: - Add block_colors dict and get_block_color() accessor to AddressStore - Update _update_block_colors(), _recompute_all_block_colors(), and _apply_initial_block_colors() to use dict instead of row objects - Remove block_color field from AddressRow and MutableRowBuilder - Update row_styler to read colors from store.get_block_color() - Update tests to use new accessor method - Document block colors pattern in CLAUDE.md Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Before it was just tracking nickname, now all content
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR introduces a major architectural refactor replacing the previous data management approach with an Immutable Base + Overlay Model. This new architecture cleanly separates database truth from user edits, enabling robust undo/redo, targeted UI updates, and better handling of external database changes.
Key Changes
New Data Layer Architecture
AddressStore: Core store managing base/overlay/visible layers with observer patternEditSession: Context manager for atomic, undoable editsMutableRowBuilder: Builder pattern for accumulating row changesUndoFrame: Snapshot-based undo/redo with 50-level historySimplified Data Model
AddressRownow immutable (frozen=Truedataclass)Service Layer Improvements
BlockService: Refactored to useapply_block_tagfor sync operationsRowService: Updated to work with edit sessionsDependencyService(functionality integrated into store)View Layer Updates
Bug Fixes
Testing
AddressStore(463 lines)MutableRowBuilder(161 lines)Documentation
Benefits
Test Plan