You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Merged src/services/github/ into src/services/source-control/. The
duplicate OctokitGitHubService push logic now lives in GithubService
behind a unified SourceControlService interface with a new push()
method. Removed the src/services/github/ directory entirely.
Renamed BackendFunctionService to FunctionBackendService and
useSourceControl to useSourceControlService to follow naming
conventions. Removed duplicate @octokit/rest from devDependencies.
Extracted useCreateFunctionForm hook inside CreateFunctionForm and
useFunctionCreatePage hook inside FunctionCreatePage per architecture
guidelines. Removed PAT field from create form (PAT management
deferred to upcoming session-wide PAT feature).
Updated design doc and workflow with received PR reviews section.
Co-Authored-By: Claude <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: docs/WORKFLOW.md
+8-3Lines changed: 8 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -21,10 +21,13 @@ After [Startup Sequence](#startup-sequence), work through the picked feature:
21
21
3.**Implement** — using `/executing-plans` skill
22
22
4.**Review** — code review using `/requesting-code-review` skill, fix found issues
23
23
5.**Manual Test** — use browser automation and validate it works in the browser
24
-
6.**Complete** — flip `passes` to `true` in [`docs/features.json`](references/features-json-readme.md), update [`docs/claude-progress.txt`](references/claude-progress-readme.md), commit
24
+
6.**Complete** — flip `passes` to `true` in [`docs/features.json`](references/features-json-readme.md), update [`docs/claude-progress.txt`](references/claude-progress-readme.md), move plan to `docs/plans/completed/`, commit
25
25
7.**PR** — push branch, open PR per [Pull Requests](#pull-requests) convention
26
-
8. Move plan to `docs/plans/completed/`
27
-
9. Stop, wait for user command
26
+
8. Stop — wait for PR review. Rework per [Received PR Reviews](#received-pr-reviews) when asked.
27
+
28
+
## Received PR Reviews
29
+
30
+
For each comment: read the full text and its diff hunk context, make the fix, then re-read the comment and verify your change actually matches what was asked (placement, naming, scope — not just compilation). Reply in the thread stating what changed.
28
31
29
32
## Branching
30
33
@@ -38,6 +41,8 @@ Open PRs via `gh pr create` using the template at `.github/pull_request_template
38
41
39
42
Types are the same as [conventional commits](references/commit-message-guide.md#conventional-commits) but capitalized.
40
43
44
+
No em dashes (`—`) in PR titles or descriptions. Use commas, periods, or parentheses instead.
Copy file name to clipboardExpand all lines: docs/features.json
+44Lines changed: 44 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -81,5 +81,49 @@
81
81
"VM isolation ensures no leakage to host workstation"
82
82
],
83
83
"passes": false
84
+
},
85
+
{
86
+
"category": "functional",
87
+
"description": "GitHub PAT Avatar: session-wide PAT entry via modal + avatar component showing authenticated GitHub user",
88
+
"steps": [
89
+
"PatModal opens automatically on first visit to Function List Page when no PAT is stored in session",
90
+
"PatModal is dismissable — user can close it without entering a PAT",
91
+
"PatModal validates the PAT against GitHub API and on success stores it in session and closes",
92
+
"SourceControlService interface extended with init(pat: string) and isInitialized(): boolean methods; GithubService implementation updated accordingly",
93
+
"UserAvatar component renders inside ListPageHeader at the top-right corner on every page (list, create, edit)",
94
+
"UserAvatar has two states: not initialized shows 'Connect to GitHub' with a key/lock icon (clickable, opens PatModal); initialized shows GitHub username with avatar icon",
95
+
"UserAvatar is clickable only on the Function List Page, clicking reopens PatModal to change the PAT and associated GitHub user",
96
+
"On Create and Edit pages, UserAvatar displays the GitHub user but is not clickable (PAT cannot be changed from those pages)",
97
+
"When PatModal is dismissed without a PAT, the Function List Page (both empty state and table view) shows a hint text directing the user to click 'Connect to GitHub' in the top-right corner to set a PAT",
98
+
"PAT change logic is encapsulated in a useUserAvatar custom hook following layered architecture (Hook imports Service, Component imports Hook)"
99
+
],
100
+
"passes": false
101
+
},
102
+
{
103
+
"category": "functional",
104
+
"description": "Function List Page shows deployed functions from all user-accessible namespaces without requiring a PAT",
105
+
"steps": [
106
+
"ClusterService refactored: remove ALL_NAMESPACES and useActiveNamespace logic, always watch across all user-accessible namespaces (functions in GitHub repos can target different namespaces via func.yaml, so single-namespace view is not useful; filtering deferred to a later feature)",
107
+
"ClusterService lists all namespaces/projects accessible to the logged-in user and watches Deployments with label function.knative.dev/name across all of them",
108
+
"Function List Page renders deployed functions even when no PAT has been entered (PatModal dismissed or not yet shown)",
109
+
"When PAT is later provided, repo data from SourceControlService is merged with already-visible deployed functions",
110
+
"Deployed functions without a matching repo still appear in the table with available cluster data (name, namespace, status, replicas, url)"
"Merge src/services/github/ into src/services/source-control/, combine OctokitGitHubService push logic into GithubService, remove src/services/github/ directory entirely",
119
+
"Rename GitHubService interface to SourceControlService and add push method to the existing SourceControlService interface (rename pushFiles to push per design doc)",
120
+
"Rename useGitHubService hook to useSourceControlService",
121
+
"Rename BackendFunctionService.ts to FunctionBackendService.ts",
122
+
"Remove duplicate @octokit/rest from devDependencies in package.json (keep only the entry under dependencies)",
123
+
"Extract useFunctionCreatePage hook from FunctionCreatePage — move service calls into useEffect (both FunctionService and SourceControlService call external APIs), keep the component rendering-only",
124
+
"Extract useCreateFunctionForm hook from CreateFunctionForm — consolidate individual useState calls into a single fields state object with a setField(key, value) helper, derive isValid from fields, remove handleSubmit (call onSubmit(fields) directly)",
125
+
"Update design doc (2026-03-16-faas-poc-design.md) to reflect all renames and new method signatures"
0 commit comments