feat(desktop): make tasks a session workspace - #214

Merged
IchenDEV merged 4 commits into
mainfrom
codex/task-session-workspace
Sep 1, 2026
Merged

feat(desktop): make tasks a session workspace#214
IchenDEV merged 4 commits into
mainfrom
codex/task-session-workspace

Conversation

@IchenDEV

Copy link
Copy Markdown
Owner

Canonical change Artifact

  • Change: docs/sdlc/changes/2026-09-01-task-session-workspace/change.md
  • Schema: 2
  • Lifecycle status: verified
  • Intent/Spec approval: user-approved prototype option A and direct implementation/lint follow-ups on 2026-09-01
  • Risk and scope: medium; desktop TaskBoard workspace, integration wiring, focused tests, lint/mutation gates, and canonical Artifact

Outcome

TaskBoard is now a dense Task-to-Session workspace instead of a four-column Kanban surface. Tasks retain their existing editing and lifecycle actions, expand into newest-first Session history, and drive a persistent inspector that shows the selected Session's activity, checkout/worktree, and best-effort pull request.

The implementation preserves Task persistence and Session/Core authority, scopes pull requests to each Session checkout, and keeps lookup failures quiet. The former 1,268-line page is split into responsibility-owned modules. ESLint automatically covers new TaskBoard TypeScript modules with useful complexity, file-size, unused-code, local-redundancy, and unsafe-any rules; Stryker remains the separate deterministic model test.

Rendered evidence:

Verification

  • Every AC-N acceptance criterion is mapped to one actual command or linked evidence item.
  • The Artifact records Verdict: verified and a concrete residual risk.
  • Verification mode, verifier, and date match the medium-risk owner-verification lane.
  • Post-merge desktop suite: 826 tests across 142 files, 4,908 assertions, zero failures.
  • bun run build:renderer passed after lint, Stylelint, TypeScript, and Vite production build.
  • bun run mutation:taskboard: 86 valid mutants killed, 0 survived, 0 without coverage; 84 compile-invalid mutants rejected.
  • Documentation catalog, SDLC plain/worktree checks, Gate self-tests, and git diff --check passed.
  • Real light, dark, and narrow evidence is linked above.

Review and release

  • Risk level: medium
  • Release target: none
  • Rollback: revert the TaskBoard workspace commits; Task and Session persistence formats are unchanged.
  • Merge approval: pending human review
  • Release approval: not applicable
  • This PR does not infer merge, deployment, or release authority from implementation work.

@IchenDEV
IchenDEV marked this pull request as ready for review September 1, 2026 05:43
@IchenDEV
IchenDEV merged commit 521f3b9 into mainSep 1, 2026
4 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@IchenDEV
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

feat(desktop): make tasks a session workspace - #214

Merged
IchenDEV merged 4 commits into
mainfrom
codex/task-session-workspace
Sep 1, 2026
Merged

feat(desktop): make tasks a session workspace#214
IchenDEV merged 4 commits into
mainfrom
codex/task-session-workspace

Conversation

@IchenDEV

Copy link
Copy Markdown
Owner

Canonical change Artifact

  • Change: docs/sdlc/changes/2026-09-01-task-session-workspace/change.md
  • Schema: 2
  • Lifecycle status: verified
  • Intent/Spec approval: user-approved prototype option A and direct implementation/lint follow-ups on 2026-09-01
  • Risk and scope: medium; desktop TaskBoard workspace, integration wiring, focused tests, lint/mutation gates, and canonical Artifact

Outcome

TaskBoard is now a dense Task-to-Session workspace instead of a four-column Kanban surface. Tasks retain their existing editing and lifecycle actions, expand into newest-first Session history, and drive a persistent inspector that shows the selected Session's activity, checkout/worktree, and best-effort pull request.

The implementation preserves Task persistence and Session/Core authority, scopes pull requests to each Session checkout, and keeps lookup failures quiet. The former 1,268-line page is split into responsibility-owned modules. ESLint automatically covers new TaskBoard TypeScript modules with useful complexity, file-size, unused-code, local-redundancy, and unsafe-any rules; Stryker remains the separate deterministic model test.

Rendered evidence:

Verification

  • Every AC-N acceptance criterion is mapped to one actual command or linked evidence item.
  • The Artifact records Verdict: verified and a concrete residual risk.
  • Verification mode, verifier, and date match the medium-risk owner-verification lane.
  • Post-merge desktop suite: 826 tests across 142 files, 4,908 assertions, zero failures.
  • bun run build:renderer passed after lint, Stylelint, TypeScript, and Vite production build.
  • bun run mutation:taskboard: 86 valid mutants killed, 0 survived, 0 without coverage; 84 compile-invalid mutants rejected.
  • Documentation catalog, SDLC plain/worktree checks, Gate self-tests, and git diff --check passed.
  • Real light, dark, and narrow evidence is linked above.

Review and release

  • Risk level: medium
  • Release target: none
  • Rollback: revert the TaskBoard workspace commits; Task and Session persistence formats are unchanged.
  • Merge approval: pending human review
  • Release approval: not applicable
  • This PR does not infer merge, deployment, or release authority from implementation work.

@IchenDEV
IchenDEV marked this pull request as ready for review September 1, 2026 05:43
@IchenDEV
IchenDEV merged commit 521f3b9 into mainSep 1, 2026
4 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@IchenDEV
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(desktop): make tasks a session workspace - #214

Merged
IchenDEV merged 4 commits into
mainfrom
codex/task-session-workspace
Sep 1, 2026
Merged

feat(desktop): make tasks a session workspace#214
IchenDEV merged 4 commits into
mainfrom
codex/task-session-workspace

Conversation

@IchenDEV

Copy link
Copy Markdown
Owner

Canonical change Artifact

  • Change: docs/sdlc/changes/2026-09-01-task-session-workspace/change.md
  • Schema: 2
  • Lifecycle status: verified
  • Intent/Spec approval: user-approved prototype option A and direct implementation/lint follow-ups on 2026-09-01
  • Risk and scope: medium; desktop TaskBoard workspace, integration wiring, focused tests, lint/mutation gates, and canonical Artifact

Outcome

TaskBoard is now a dense Task-to-Session workspace instead of a four-column Kanban surface. Tasks retain their existing editing and lifecycle actions, expand into newest-first Session history, and drive a persistent inspector that shows the selected Session's activity, checkout/worktree, and best-effort pull request.

The implementation preserves Task persistence and Session/Core authority, scopes pull requests to each Session checkout, and keeps lookup failures quiet. The former 1,268-line page is split into responsibility-owned modules. ESLint automatically covers new TaskBoard TypeScript modules with useful complexity, file-size, unused-code, local-redundancy, and unsafe-any rules; Stryker remains the separate deterministic model test.

Rendered evidence:

Verification

  • Every AC-N acceptance criterion is mapped to one actual command or linked evidence item.
  • The Artifact records Verdict: verified and a concrete residual risk.
  • Verification mode, verifier, and date match the medium-risk owner-verification lane.
  • Post-merge desktop suite: 826 tests across 142 files, 4,908 assertions, zero failures.
  • bun run build:renderer passed after lint, Stylelint, TypeScript, and Vite production build.
  • bun run mutation:taskboard: 86 valid mutants killed, 0 survived, 0 without coverage; 84 compile-invalid mutants rejected.
  • Documentation catalog, SDLC plain/worktree checks, Gate self-tests, and git diff --check passed.
  • Real light, dark, and narrow evidence is linked above.

Review and release

  • Risk level: medium
  • Release target: none
  • Rollback: revert the TaskBoard workspace commits; Task and Session persistence formats are unchanged.
  • Merge approval: pending human review
  • Release approval: not applicable
  • This PR does not infer merge, deployment, or release authority from implementation work.

@IchenDEV
IchenDEV marked this pull request as ready for review September 1, 2026 05:43
@IchenDEV
IchenDEV merged commit 521f3b9 into mainSep 1, 2026
4 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@IchenDEV
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(desktop): make tasks a session workspace - #214

Merged
IchenDEV merged 4 commits into
mainfrom
codex/task-session-workspace
Sep 1, 2026
Merged

feat(desktop): make tasks a session workspace#214
IchenDEV merged 4 commits into
mainfrom
codex/task-session-workspace

Conversation

@IchenDEV

Copy link
Copy Markdown
Owner

Canonical change Artifact

  • Change: docs/sdlc/changes/2026-09-01-task-session-workspace/change.md
  • Schema: 2
  • Lifecycle status: verified
  • Intent/Spec approval: user-approved prototype option A and direct implementation/lint follow-ups on 2026-09-01
  • Risk and scope: medium; desktop TaskBoard workspace, integration wiring, focused tests, lint/mutation gates, and canonical Artifact

Outcome

TaskBoard is now a dense Task-to-Session workspace instead of a four-column Kanban surface. Tasks retain their existing editing and lifecycle actions, expand into newest-first Session history, and drive a persistent inspector that shows the selected Session's activity, checkout/worktree, and best-effort pull request.

The implementation preserves Task persistence and Session/Core authority, scopes pull requests to each Session checkout, and keeps lookup failures quiet. The former 1,268-line page is split into responsibility-owned modules. ESLint automatically covers new TaskBoard TypeScript modules with useful complexity, file-size, unused-code, local-redundancy, and unsafe-any rules; Stryker remains the separate deterministic model test.

Rendered evidence:

Verification

  • Every AC-N acceptance criterion is mapped to one actual command or linked evidence item.
  • The Artifact records Verdict: verified and a concrete residual risk.
  • Verification mode, verifier, and date match the medium-risk owner-verification lane.
  • Post-merge desktop suite: 826 tests across 142 files, 4,908 assertions, zero failures.
  • bun run build:renderer passed after lint, Stylelint, TypeScript, and Vite production build.
  • bun run mutation:taskboard: 86 valid mutants killed, 0 survived, 0 without coverage; 84 compile-invalid mutants rejected.
  • Documentation catalog, SDLC plain/worktree checks, Gate self-tests, and git diff --check passed.
  • Real light, dark, and narrow evidence is linked above.

Review and release

  • Risk level: medium
  • Release target: none
  • Rollback: revert the TaskBoard workspace commits; Task and Session persistence formats are unchanged.
  • Merge approval: pending human review
  • Release approval: not applicable
  • This PR does not infer merge, deployment, or release authority from implementation work.

@IchenDEV
IchenDEV marked this pull request as ready for review September 1, 2026 05:43
@IchenDEV
IchenDEV merged commit 521f3b9 into mainSep 1, 2026
4 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@IchenDEV
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

feat(desktop): make tasks a session workspace - #214

Merged
IchenDEV merged 4 commits into
mainfrom
codex/task-session-workspace
Sep 1, 2026
Merged

feat(desktop): make tasks a session workspace#214
IchenDEV merged 4 commits into
mainfrom
codex/task-session-workspace

Conversation

@IchenDEV

Copy link
Copy Markdown
Owner

Canonical change Artifact

  • Change: docs/sdlc/changes/2026-09-01-task-session-workspace/change.md
  • Schema: 2
  • Lifecycle status: verified
  • Intent/Spec approval: user-approved prototype option A and direct implementation/lint follow-ups on 2026-09-01
  • Risk and scope: medium; desktop TaskBoard workspace, integration wiring, focused tests, lint/mutation gates, and canonical Artifact

Outcome

TaskBoard is now a dense Task-to-Session workspace instead of a four-column Kanban surface. Tasks retain their existing editing and lifecycle actions, expand into newest-first Session history, and drive a persistent inspector that shows the selected Session's activity, checkout/worktree, and best-effort pull request.

The implementation preserves Task persistence and Session/Core authority, scopes pull requests to each Session checkout, and keeps lookup failures quiet. The former 1,268-line page is split into responsibility-owned modules. ESLint automatically covers new TaskBoard TypeScript modules with useful complexity, file-size, unused-code, local-redundancy, and unsafe-any rules; Stryker remains the separate deterministic model test.

Rendered evidence:

Verification

  • Every AC-N acceptance criterion is mapped to one actual command or linked evidence item.
  • The Artifact records Verdict: verified and a concrete residual risk.
  • Verification mode, verifier, and date match the medium-risk owner-verification lane.
  • Post-merge desktop suite: 826 tests across 142 files, 4,908 assertions, zero failures.
  • bun run build:renderer passed after lint, Stylelint, TypeScript, and Vite production build.
  • bun run mutation:taskboard: 86 valid mutants killed, 0 survived, 0 without coverage; 84 compile-invalid mutants rejected.
  • Documentation catalog, SDLC plain/worktree checks, Gate self-tests, and git diff --check passed.
  • Real light, dark, and narrow evidence is linked above.

Review and release

  • Risk level: medium
  • Release target: none
  • Rollback: revert the TaskBoard workspace commits; Task and Session persistence formats are unchanged.
  • Merge approval: pending human review
  • Release approval: not applicable
  • This PR does not infer merge, deployment, or release authority from implementation work.

@IchenDEV
IchenDEV marked this pull request as ready for review September 1, 2026 05:43
@IchenDEV
IchenDEV merged commit 521f3b9 into mainSep 1, 2026
4 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@IchenDEV
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(desktop): make tasks a session workspace - #214

Merged
IchenDEV merged 4 commits into
mainfrom
codex/task-session-workspace
Sep 1, 2026
Merged

feat(desktop): make tasks a session workspace#214
IchenDEV merged 4 commits into
mainfrom
codex/task-session-workspace

Conversation

@IchenDEV

Copy link
Copy Markdown
Owner

Canonical change Artifact

  • Change: docs/sdlc/changes/2026-09-01-task-session-workspace/change.md
  • Schema: 2
  • Lifecycle status: verified
  • Intent/Spec approval: user-approved prototype option A and direct implementation/lint follow-ups on 2026-09-01
  • Risk and scope: medium; desktop TaskBoard workspace, integration wiring, focused tests, lint/mutation gates, and canonical Artifact

Outcome

TaskBoard is now a dense Task-to-Session workspace instead of a four-column Kanban surface. Tasks retain their existing editing and lifecycle actions, expand into newest-first Session history, and drive a persistent inspector that shows the selected Session's activity, checkout/worktree, and best-effort pull request.

The implementation preserves Task persistence and Session/Core authority, scopes pull requests to each Session checkout, and keeps lookup failures quiet. The former 1,268-line page is split into responsibility-owned modules. ESLint automatically covers new TaskBoard TypeScript modules with useful complexity, file-size, unused-code, local-redundancy, and unsafe-any rules; Stryker remains the separate deterministic model test.

Rendered evidence:

Verification

  • Every AC-N acceptance criterion is mapped to one actual command or linked evidence item.
  • The Artifact records Verdict: verified and a concrete residual risk.
  • Verification mode, verifier, and date match the medium-risk owner-verification lane.
  • Post-merge desktop suite: 826 tests across 142 files, 4,908 assertions, zero failures.
  • bun run build:renderer passed after lint, Stylelint, TypeScript, and Vite production build.
  • bun run mutation:taskboard: 86 valid mutants killed, 0 survived, 0 without coverage; 84 compile-invalid mutants rejected.
  • Documentation catalog, SDLC plain/worktree checks, Gate self-tests, and git diff --check passed.
  • Real light, dark, and narrow evidence is linked above.

Review and release

  • Risk level: medium
  • Release target: none
  • Rollback: revert the TaskBoard workspace commits; Task and Session persistence formats are unchanged.
  • Merge approval: pending human review
  • Release approval: not applicable
  • This PR does not infer merge, deployment, or release authority from implementation work.

@IchenDEV
IchenDEV marked this pull request as ready for review September 1, 2026 05:43
@IchenDEV
IchenDEV merged commit 521f3b9 into mainSep 1, 2026
4 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@IchenDEV
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(desktop): make tasks a session workspace - #214

Merged
IchenDEV merged 4 commits into
mainfrom
codex/task-session-workspace
Sep 1, 2026
Merged

feat(desktop): make tasks a session workspace#214
IchenDEV merged 4 commits into
mainfrom
codex/task-session-workspace

Conversation

@IchenDEV

Copy link
Copy Markdown
Owner

Canonical change Artifact

  • Change: docs/sdlc/changes/2026-09-01-task-session-workspace/change.md
  • Schema: 2
  • Lifecycle status: verified
  • Intent/Spec approval: user-approved prototype option A and direct implementation/lint follow-ups on 2026-09-01
  • Risk and scope: medium; desktop TaskBoard workspace, integration wiring, focused tests, lint/mutation gates, and canonical Artifact

Outcome

TaskBoard is now a dense Task-to-Session workspace instead of a four-column Kanban surface. Tasks retain their existing editing and lifecycle actions, expand into newest-first Session history, and drive a persistent inspector that shows the selected Session's activity, checkout/worktree, and best-effort pull request.

The implementation preserves Task persistence and Session/Core authority, scopes pull requests to each Session checkout, and keeps lookup failures quiet. The former 1,268-line page is split into responsibility-owned modules. ESLint automatically covers new TaskBoard TypeScript modules with useful complexity, file-size, unused-code, local-redundancy, and unsafe-any rules; Stryker remains the separate deterministic model test.

Rendered evidence:

Verification

  • Every AC-N acceptance criterion is mapped to one actual command or linked evidence item.
  • The Artifact records Verdict: verified and a concrete residual risk.
  • Verification mode, verifier, and date match the medium-risk owner-verification lane.
  • Post-merge desktop suite: 826 tests across 142 files, 4,908 assertions, zero failures.
  • bun run build:renderer passed after lint, Stylelint, TypeScript, and Vite production build.
  • bun run mutation:taskboard: 86 valid mutants killed, 0 survived, 0 without coverage; 84 compile-invalid mutants rejected.
  • Documentation catalog, SDLC plain/worktree checks, Gate self-tests, and git diff --check passed.
  • Real light, dark, and narrow evidence is linked above.

Review and release

  • Risk level: medium
  • Release target: none
  • Rollback: revert the TaskBoard workspace commits; Task and Session persistence formats are unchanged.
  • Merge approval: pending human review
  • Release approval: not applicable
  • This PR does not infer merge, deployment, or release authority from implementation work.

@IchenDEV
IchenDEV marked this pull request as ready for review September 1, 2026 05:43
@IchenDEV
IchenDEV merged commit 521f3b9 into mainSep 1, 2026
4 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@IchenDEV
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

feat(desktop): make tasks a session workspace - #214

Merged
IchenDEV merged 4 commits into
mainfrom
codex/task-session-workspace
Sep 1, 2026
Merged

feat(desktop): make tasks a session workspace#214
IchenDEV merged 4 commits into
mainfrom
codex/task-session-workspace

Conversation

@IchenDEV

Copy link
Copy Markdown
Owner

Canonical change Artifact

  • Change: docs/sdlc/changes/2026-09-01-task-session-workspace/change.md
  • Schema: 2
  • Lifecycle status: verified
  • Intent/Spec approval: user-approved prototype option A and direct implementation/lint follow-ups on 2026-09-01
  • Risk and scope: medium; desktop TaskBoard workspace, integration wiring, focused tests, lint/mutation gates, and canonical Artifact

Outcome

TaskBoard is now a dense Task-to-Session workspace instead of a four-column Kanban surface. Tasks retain their existing editing and lifecycle actions, expand into newest-first Session history, and drive a persistent inspector that shows the selected Session's activity, checkout/worktree, and best-effort pull request.

The implementation preserves Task persistence and Session/Core authority, scopes pull requests to each Session checkout, and keeps lookup failures quiet. The former 1,268-line page is split into responsibility-owned modules. ESLint automatically covers new TaskBoard TypeScript modules with useful complexity, file-size, unused-code, local-redundancy, and unsafe-any rules; Stryker remains the separate deterministic model test.

Rendered evidence:

Verification

  • Every AC-N acceptance criterion is mapped to one actual command or linked evidence item.
  • The Artifact records Verdict: verified and a concrete residual risk.
  • Verification mode, verifier, and date match the medium-risk owner-verification lane.
  • Post-merge desktop suite: 826 tests across 142 files, 4,908 assertions, zero failures.
  • bun run build:renderer passed after lint, Stylelint, TypeScript, and Vite production build.
  • bun run mutation:taskboard: 86 valid mutants killed, 0 survived, 0 without coverage; 84 compile-invalid mutants rejected.
  • Documentation catalog, SDLC plain/worktree checks, Gate self-tests, and git diff --check passed.
  • Real light, dark, and narrow evidence is linked above.

Review and release

  • Risk level: medium
  • Release target: none
  • Rollback: revert the TaskBoard workspace commits; Task and Session persistence formats are unchanged.
  • Merge approval: pending human review
  • Release approval: not applicable
  • This PR does not infer merge, deployment, or release authority from implementation work.

@IchenDEV
IchenDEV marked this pull request as ready for review September 1, 2026 05:43
@IchenDEV
IchenDEV merged commit 521f3b9 into mainSep 1, 2026
4 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@IchenDEV