feat(web): add durable Projects workspace - #231
Draft
seonghobae wants to merge 12 commits into
Draft
Conversation
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueThanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
This was referenced Sep 2, 2026
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.
Advances #209 as a dependency-ordered child of #229. This slice adds the first-party
/projectsworkspace on top of the already-stacked authenticated Goal and Project BFF contracts; the browser never supplies workspace authority and accepts only validated durable Goal/Project evidence.The pre-existing
feat/web-projects-workspace-v1branch had no PR and diverged from #229 before six Goals review fixes landed. Its two valid RED invariants (goal-scoped workspace state and rejecting late cross-goal Project responses) were revalidated and carried forward onto this non-force successor instead of rewriting that branch. Successor RED begins at00378a1f2ec2dd09328baae7b2cf0604141c52a2;92515c163de0eae7fd6e428b1220031df41cb5d6wires it into the web suite. Current implementation head is8f5e1c0c1afe80210279cf6f830fff5e9b8c16d2.The workspace requires explicit Goal selection before Project queries or mutation, clears stale Project evidence on scope change, ignores late GET/create results from prior Goal scope, accepts creation only after explicit form submission and returned server evidence, validates UUIDv4/canonical UTC/title boundaries, preserves existing evidence on offline/auth/unavailable transitions, clamps Unicode titles by code point, and supplies loading/empty/auth/error plus responsive keyboard-focus/target-size states. Playwright coverage includes stale request ordering, durable-create acceptance, non-BMP title limits, authentication failure, and 390px overflow/target-size evidence.
A bounded local TypeScript strict check and targeted reducer execution passed for the new state module. This stacked PR does not claim repository-wide CI/security/coverage GREEN: repository workflows currently trigger only for PRs targeting
main/develop, so it must reacquire exact-head hosted gates after its prerequisites integrate and the stack is descendant-restacked. It also does not claim the complete Goal → Project → Task → Habit → Review journey, Figma/Storybook completion, eight-locale/DB-backed translation parity, release readiness, or #209 closure.