Skip to content

v2.4.0 — Workspace Memory - #8

Merged
bubblegump30 merged 1 commit into
mainfrom
release/v2.4.0-workspace-memory
Oct 9, 2026
Merged

bubblegump30 merged 1 commit into
mainfrom
release/v2.4.0-workspace-memory

Conversation

@bubblegump30

Copy link
Copy Markdown
Owner

Workspace choices previously reset when the app restarted, and window recovery only checked for a small visible intersection. This release restores the last center, allowlisted search/category/state filters, process sorting (default/name/CPU/memory), and app sorting (default/name/publisher). Saved bounds now fit the available display work area, with recovery on monitor removal and display metric changes. Minimum dimensions adapt to smaller work areas.

Settings includes a confirmed Reset Workspace action for window layout, route, filters and sorting. Pins, recents, provider credentials and other settings are retained. The new IPC action takes no path/bounds parameters and rejects senders other than the app window. The additive pt.workspace.v1 preference record validates route IDs, select options and bounded search text; no AI prompts or credential fields are stored. Existing window-state.json is validated on read without migration.

Validation passed: syntax; workspace preference/geometry/sort tests; navigation; dialog focus; update verification; transaction/rollback; publisher policy tests for all prepared versions; whitespace checks. Actual-page DOM restart/reset checks passed for last center, search/sort restoration, Dashboard reset and retention of pins/provider preferences. Geometry tests cover removed/negative-coordinate monitors, oversized bounds, corrupt preferences and small work areas. These checks do not substitute for native Windows monitor/high-DPI or pixel-layout acceptance.

Version: 2.4.0. README retains v2.2.0 as the published Stable version. Release notes/changelog mark v2.4.0 unreleased. Guarded manual signed publication is prepared; no release is published. Draft pending native Windows monitor removal, 125%/150% scaling, maximized restoration, desktop reset, and Setup/Portable installation/upgrade verification.

@bubblegump30
bubblegump30 marked this pull request as ready for review October 9, 2026 02:02
@bubblegump30
bubblegump30 merged commit 9c872d5 into main Oct 9, 2026
2 checks passed
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 9, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-09T02:07:13.637011Z b846b42 Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: b846b42c3d

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/renderer.js
element.value=options?options[0]:'';
element.dispatchEvent(new Event(element.tagName==='SELECT'?'change':'input'));
}
closeModal();navigate('dashboard');

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Avoid recording Dashboard during workspace reset

When Reset Workspace is confirmed, this call routes through navigate(), which invokes recordNavigation('center:dashboard'). Consequently, resetting also reorders the recent-tools list and, when its eight-entry limit is full, evicts an existing recent item despite the dialog promising that recents stay in place. Switch views without recording navigation during reset, or preserve and restore the navigation state.

Useful? React with 👍 / 👎.

Comment thread src/workspace.js
const key='pt.workspace.v1';
const views=['dashboard','models','performance','system','featurelab','data','apps','network','privacy','automation','journal','experiments','integrations','security','settings'];
const fields={
modelSearch:null,processSearch:null,appSearch:null,featureLabSearch:null,journalSearch:null,privacyAppSearch:null,githubRepoSearch:null,

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Clear the persisted privacy app search with the session

Persisting privacyAppSearch makes the Privacy center's Clear Session action incomplete: clearPrivacySession() assigns an empty DOM value without dispatching an input event or updating workspaceState, so the previous search remains in pt.workspace.v1 and reappears after restart (and can be written again when another workspace field changes). Update the saved workspace state when this programmatic clear occurs.

Useful? React with 👍 / 👎.

- name: Require explicit Stable confirmation
shell: pwsh
run: |
if ('${{ inputs.confirmation }}' -ne 'PUBLISH-v2.4.0') {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Pass the confirmation input through the environment

A collaborator who can dispatch this workflow can place PowerShell syntax in inputs.confirmation because the expression is interpolated directly into a single-quoted script literal. For example, an input shaped like PUBLISH-v2.4.0') { }; <command>; if ('PUBLISH-v2.4.0 executes <command> while leaving the final comparison false; that command can modify the Windows artifacts before upload, after which the publish job will generate and sign a manifest for them. Bind the input through env and compare the environment variable instead of embedding untrusted text in the script.

Useful? React with 👍 / 👎.

Sign up for free to 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