summaryrefslogtreecommitdiff
path: root/issues/bug_001_template_rendering.md
diff options
context:
space:
mode:
authorPeter Stone <thepeterstone@gmail.com>2026-01-13 13:37:34 -1000
committerPeter Stone <thepeterstone@gmail.com>2026-01-13 13:37:34 -1000
commit81f1e7a489c62f21bb71b7402a2758735cddef57 (patch)
tree2cf8f59880df84dfe69b33cd985de285def67451 /issues/bug_001_template_rendering.md
parenta1fa857a2f5ab163ffe5abbdeeb0eba8fc9508e9 (diff)
Add issue tracking documentation
- bug_001_template_rendering.md: Template error documentation - bug_002_tab_state.md: Tab state persistence issue (now resolved) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Diffstat (limited to 'issues/bug_001_template_rendering.md')
-rw-r--r--issues/bug_001_template_rendering.md109
1 files changed, 109 insertions, 0 deletions
diff --git a/issues/bug_001_template_rendering.md b/issues/bug_001_template_rendering.md
new file mode 100644
index 0000000..b5b51e7
--- /dev/null
+++ b/issues/bug_001_template_rendering.md
@@ -0,0 +1,109 @@
+# Bug Report: Template Rendering Error in Notes Tab
+
+## Description
+The application logs an error when rendering the Notes tab:
+`Error rendering notes tab: template: error-banner.html:2:5: executing "error-banner" at <.Errors>: can't evaluate field Errors in type struct { Notes []models.Note }`
+
+This occurs because the `notes-tab` template (which includes `error-banner`) expects a data structure with an `Errors` field, but `HandleNotes` in `internal/handlers/tabs.go` passes an anonymous struct with only `Notes`.
+
+## Reproduction
+1. Run the application.
+2. Navigate to the Notes tab (or trigger a request to `/tabs/notes`).
+3. Observe the error in the server logs.
+
+## Fix Instructions
+
+### 1. Create a Reproduction Test
+Create a new test file `internal/handlers/tabs_test.go` to reproduce the issue.
+
+```go
+package handlers
+
+import (
+ "html/template"
+ "net/http"
+ "net/http/httptest"
+ "testing"
+
+ "task-dashboard/internal/models"
+ "task-dashboard/internal/store"
+)
+
+func TestHandleNotes_RenderError(t *testing.T) {
+ // Setup
+ // Note: You might need to mock the store or use a temporary SQLite DB
+ // For this specific template error, we can test the template execution directly
+ // or mock the store to return empty notes.
+
+ // Since setting up the full store with DB is complex for a unit test,
+ // let's focus on the data structure passed to the template.
+ // However, the handler is coupled to the store.
+
+ // A better approach for this specific bug is to verify the fix by ensuring
+ // the data struct has the Errors field.
+}
+```
+
+**Better Approach:**
+Modify `internal/handlers/tabs.go` to use a consistent data structure that includes `Errors`.
+
+### 2. Modify `internal/handlers/tabs.go`
+
+Update the `HandleNotes` function (and others if necessary) to pass a struct that includes `Errors`.
+
+```go
+// Define a shared data structure or use an anonymous one with Errors
+data := struct {
+ Notes []models.Note
+ Errors []string
+}{
+ Notes: notes,
+ Errors: nil, // Or populate if there are errors
+}
+```
+
+### 3. Verify
+Run the application and check the logs. The error should disappear.
+
+## Automated Test for Verification
+Since we don't have a full test suite set up yet, we can create a simple test that parses the templates and attempts to execute them with the corrected data structure to ensure compatibility.
+
+Create `internal/handlers/template_test.go`:
+
+```go
+package handlers_test
+
+import (
+ "html/template"
+ "testing"
+ "task-dashboard/internal/models"
+)
+
+func TestNotesTemplateRendering(t *testing.T) {
+ // Parse templates
+ tmpl, err := template.ParseGlob("../../web/templates/*.html")
+ if err != nil {
+ t.Fatalf("Failed to parse templates: %v", err)
+ }
+ tmpl, err = tmpl.ParseGlob("../../web/templates/partials/*.html")
+ if err != nil {
+ t.Fatalf("Failed to parse partials: %v", err)
+ }
+
+ // Define the data structure we EXPECT to use
+ data := struct {
+ Notes []models.Note
+ Errors []string
+ }{
+ Notes: []models.Note{},
+ Errors: []string{},
+ }
+
+ // Execute
+ err = tmpl.ExecuteTemplate(io.Discard, "notes-tab", data)
+ if err != nil {
+ t.Errorf("Failed to render notes-tab with corrected data: %v", err)
+ }
+}
+```
+(Note: You'll need to import `io` and adjust paths).