From abd20c0af0a1e58b30187030f4c3657ab063b6ab Mon Sep 17 00:00:00 2001 From: Samuel Date: Fri, 22 May 2026 16:11:33 +0200 Subject: [PATCH 1/2] Prepare Pointer open-source release --- .github/ISSUE_TEMPLATE/bug_report.md | 30 +- .github/ISSUE_TEMPLATE/config.yml | 12 +- .github/ISSUE_TEMPLATE/copilot_bug_report.md | 21 +- .github/ISSUE_TEMPLATE/feature_request.md | 20 +- .github/commands.json | 680 ------------------ .github/dependabot.yml | 4 + .github/pull_request_template.md | 20 +- .github/workflows/ci.yml | 31 + .github/workflows/windows-release.yml | 53 +- README.md | 3 + SECURITY.md | 20 +- build/lib/copilot.ts | 115 +++ build/win32/code.iss | 6 +- docs/LAUNCH_CHECKLIST.md | 49 ++ docs/PROJECT_GUIDE.md | 1 + docs/RELEASE.md | 4 + extensions/git/package.json | 2 +- extensions/github-authentication/package.json | 2 +- .../microsoft-authentication/media/index.html | 2 +- .../microsoft-authentication/package.json | 2 +- .../src/node/loopbackTemplate.ts | 2 +- extensions/theme-defaults/package.json | 2 +- package-lock.json | 224 +++--- package.json | 13 +- product.json | 6 +- resources/linux/code.appdata.xml | 4 +- resources/linux/debian/control.template | 2 +- resources/linux/rpm/code.spec.template | 2 +- resources/win32/appx/AppxManifest.xml | 4 +- .../browser/sessionsPolicyBlocked.ts | 8 +- .../extensions/browser/extensionsActions.ts | 18 +- .../common/gettingStartedContent.ts | 2 +- 32 files changed, 505 insertions(+), 859 deletions(-) delete mode 100644 .github/commands.json create mode 100644 docs/LAUNCH_CHECKLIST.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index ad1f2b23812..6ac9e394408 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -1,27 +1,27 @@ --- name: Bug report -about: Create a report to help us improve +about: Report a reproducible Pointer problem title: '' -labels: '' +labels: bug assignees: '' --- - - - - - - - -Does this issue occur when all extensions are disabled?: Yes/No + - - -- VS Code Version: -- OS Version: +- Pointer Version: +- Build type: Installer / ZIP / Dev +- OS Version: +- Architecture: x64 / arm64 +- Does this reproduce with extensions disabled?: Yes / No Steps to Reproduce: -1. +1. 2. + +Expected Result: + +Actual Result: + +Logs, screenshots, or additional context: diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index fe112524006..0d13dbee0db 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,8 +1,8 @@ blank_issues_enabled: false contact_links: - - name: Question - url: https://stackoverflow.com/questions/tagged/visual-studio-code - about: Please ask and answer questions here. - - name: Extension Development - url: https://github.com/microsoft/vscode-discussions/discussions - about: Please use this for extension development questions and ideas. + - name: Pointer Discussions + url: https://github.com/PointerIDE/Pointer/discussions + about: Ask questions, share ideas, and get community help for Pointer. + - name: Security report + url: https://github.com/PointerIDE/Pointer/security/advisories/new + about: Please report suspected vulnerabilities privately. diff --git a/.github/ISSUE_TEMPLATE/copilot_bug_report.md b/.github/ISSUE_TEMPLATE/copilot_bug_report.md index 9a77481a8c6..089b338790a 100644 --- a/.github/ISSUE_TEMPLATE/copilot_bug_report.md +++ b/.github/ISSUE_TEMPLATE/copilot_bug_report.md @@ -1,23 +1,26 @@ --- -name: Copilot Bug report -about: Create a report to help us improve Copilot's chat interface in VS Code +name: AI feature bug report +about: Report a Pointer AI, chat, or agent workflow issue title: '' -labels: chat-ext-issue +labels: ai, bug assignees: '' --- - - + -- Copilot Chat Extension Version: -- VS Code Version: +- Pointer Version: +- Build type: Installer / ZIP / Dev - OS Version: -- Feature (e.g. agent/edit/ask mode): -- Selected model (e.g. GPT 4.1, Claude 3.7 Sonnet): +- Feature: Chat / Agent / Inline completions / Other +- Provider or extension involved: - Logs: Steps to Reproduce: 1. 2. + +Expected Result: + +Actual Result: diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index 4e2639b9c6f..db6a52ecd75 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -1,14 +1,22 @@ --- name: Feature request -about: Suggest an idea for this project +about: Suggest a Pointer improvement title: '' -labels: '' +labels: feature-request assignees: '' --- - - - + - +## Problem + +What workflow or limitation should Pointer improve? + +## Proposed Solution + +What would you like to happen? + +## Alternatives + +What have you tried or considered? diff --git a/.github/commands.json b/.github/commands.json deleted file mode 100644 index c8afbde3897..00000000000 --- a/.github/commands.json +++ /dev/null @@ -1,680 +0,0 @@ -[ - { - "type": "comment", - "name": "question", - "allowUsers": [ - "cleidigh", - "usernamehw", - "gjsjohnmurray", - "IllusionMH" - ], - "action": "updateLabels", - "addLabel": "*question" - }, - { - "type": "comment", - "name": "dev-question", - "allowUsers": [ - "cleidigh", - "usernamehw", - "gjsjohnmurray", - "IllusionMH" - ], - "action": "updateLabels", - "addLabel": "*dev-question" - }, - { - "type": "label", - "name": "*question", - "action": "close", - "reason": "not_planned", - "comment": "We closed this issue because it is a question about using VS Code rather than an issue or feature request. Please search for help on [StackOverflow](https://aka.ms/vscodestackoverflow), where the community has already answered thousands of similar questions. You may find their [guide on asking a new question](https://aka.ms/vscodestackoverflowquestion) helpful if your question has not already been asked. See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting).\n\nHappy Coding!" - }, - { - "type": "label", - "name": "*dev-question", - "action": "close", - "reason": "not_planned", - "comment": "We have a great extension developer community over on [GitHub discussions](https://github.com/microsoft/vscode-discussions/discussions) and [Slack](https://vscode-dev-community.slack.com/) where extension authors help each other. This is a great place for you to ask questions and find support.\n\nHappy Coding!" - }, - { - "type": "label", - "name": "*extension-candidate", - "action": "close", - "reason": "not_planned", - "comment": "We try to keep VS Code lean and we think the functionality you're asking for is great for a VS Code extension. Maybe you can already find one that suits you in the [VS Code Marketplace](https://aka.ms/vscodemarketplace). Just in case, in a few simple steps you can get started [writing your own extension](https://aka.ms/vscodewritingextensions). See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting).\n\nHappy Coding!" - }, - { - "type": "label", - "name": "*not-reproducible", - "action": "close", - "reason": "not_planned", - "comment": "We closed this issue because we are unable to reproduce the problem with the steps you describe. Chances are we've already fixed your problem in a recent version of VS Code. If not, please ask us to reopen the issue and provide us with more detail. Our [issue reporting guidelines](https://aka.ms/vscodeissuereporting) might help you with that.\n\nHappy Coding!" - }, - { - "type": "label", - "name": "*out-of-scope", - "action": "close", - "reason": "not_planned", - "comment": "We closed this issue because we [don't plan to address it](https://aka.ms/vscode-out-of-scope) in the foreseeable future. If you disagree and feel that this issue is crucial: we are happy to listen and to reconsider.\n\nIf you wonder what we are up to, please see our [roadmap](https://aka.ms/vscoderoadmap) and [issue reporting guidelines](https://aka.ms/vscodeissuereporting).\n\nThanks for your understanding, and happy coding!" - }, - { - "type": "label", - "name": "wont-fix", - "action": "close", - "reason": "not_planned", - "comment": "We closed this issue because we [don't plan to address it](https://github.com/microsoft/vscode/wiki/Issue-Grooming#wont-fix-bugs).\n\nThanks for your understanding, and happy coding!" - }, - { - "type": "comment", - "name": "causedByExtension", - "allowUsers": [ - "cleidigh", - "usernamehw", - "gjsjohnmurray", - "IllusionMH" - ], - "action": "updateLabels", - "addLabel": "*caused-by-extension" - }, - { - "type": "label", - "name": "*caused-by-extension", - "action": "close", - "reason": "not_planned", - "comment": "This issue is caused by an extension, please file it with the repository (or contact) the extension has linked in its overview in VS Code or the [marketplace](https://aka.ms/vscodemarketplace) for VS Code. See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting). If you don't know which extension is causing the problem, you can run `Help: Start extension bisect` from the command palette (F1) to help identify the problem extension.\n\nHappy Coding!" - }, - { - "type": "label", - "name": "*as-designed", - "action": "close", - "reason": "not_planned", - "comment": "The described behavior is how it is expected to work. If you disagree, please explain what is expected and what is not in more detail. See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting).\n\nHappy Coding!" - }, - { - "type": "label", - "name": "L10N", - "assign": [ - "csigs", - "TylerLeonhardt" - ] - }, - { - "type": "comment", - "name": "duplicate", - "allowUsers": [ - "cleidigh", - "usernamehw", - "gjsjohnmurray", - "IllusionMH" - ], - "action": "updateLabels", - "addLabel": "*duplicate" - }, - { - "type": "label", - "name": "*duplicate", - "action": "close", - "reason": "duplicate", - "comment": "Thanks for creating this issue! We figured it's covering the same as another one we already have. Thus, we closed this one as a duplicate. You can search for [similar existing issues](${duplicateQuery}). See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting).\n\nHappy Coding!" - }, - { - "type": "comment", - "name": "verified", - "allowUsers": [ - "@author" - ], - "action": "updateLabels", - "addLabel": "verified", - "removeLabel": "author-verification-requested", - "requireLabel": "author-verification-requested", - "disallowLabel": "unreleased" - }, - { - "type": "comment", - "name": "confirm", - "allowUsers": [ - "cleidigh", - "usernamehw", - "gjsjohnmurray", - "IllusionMH" - ], - "action": "updateLabels", - "addLabel": "confirmed", - "removeLabel": "confirmation-pending" - }, - { - "type": "comment", - "name": "confirmationPending", - "allowUsers": [ - "cleidigh", - "usernamehw", - "gjsjohnmurray", - "IllusionMH" - ], - "action": "updateLabels", - "addLabel": "confirmation-pending", - "removeLabel": "confirmed" - }, - { - "type": "comment", - "name": "needsMoreInfo", - "allowUsers": [ - "cleidigh", - "usernamehw", - "gjsjohnmurray", - "IllusionMH" - ], - "action": "updateLabels", - "addLabel": "~info-needed" - }, - { - "type": "comment", - "name": "needsPerfInfo", - "allowUsers": [ - "cleidigh", - "usernamehw", - "gjsjohnmurray", - "IllusionMH" - ], - "addLabel": "info-needed", - "comment": "Thanks for creating this issue regarding performance! Please follow this guide to help us diagnose performance issues: https://github.com/microsoft/vscode/wiki/Performance-Issues \n\nHappy Coding!" - }, - { - "type": "comment", - "name": "jsDebugLogs", - "action": "updateLabels", - "addLabel": "info-needed", - "comment": "Please collect trace logs using the following instructions:\n\n> If you're able to, add `\"trace\": true` to your `launch.json` and reproduce the issue. The location of the log file on your disk will be written to the Debug Console. Share that with us.\n>\n> ⚠️ This log file will not contain source code, but will contain file paths. You can drop it into https://microsoft.github.io/vscode-pwa-analyzer/index.html to see what it contains. If you'd rather not share the log publicly, you can email it to connor@xbox.com" - }, - { - "type": "comment", - "name": "closedWith", - "allowUsers": [ - "cleidigh", - "usernamehw", - "gjsjohnmurray", - "IllusionMH" - ], - "action": "close", - "reason": "completed", - "addLabel": "unreleased" - }, - { - "type": "comment", - "name": "spam", - "allowUsers": [ - "cleidigh", - "usernamehw", - "gjsjohnmurray", - "IllusionMH" - ], - "action": "close", - "reason": "not_planned", - "addLabel": "invalid" - }, - { - "type": "comment", - "name": "a11ymas", - "allowUsers": [ - "AccessibilityTestingTeam-TCS", - "dixitsonali95", - "Mohini78", - "ChitrarupaSharma", - "mspatil110", - "umasarath52", - "v-umnaik" - ], - "action": "updateLabels", - "addLabel": "a11ymas" - }, - { - "type": "label", - "name": "*off-topic", - "action": "close", - "reason": "not_planned", - "comment": "Thanks for creating this issue. We think this issue is unactionable or unrelated to the goals of this project. Please follow our [issue reporting guidelines](https://aka.ms/vscodeissuereporting).\n\nHappy Coding!" - }, - { - "type": "comment", - "name": "extPython", - "allowUsers": [ - "cleidigh", - "usernamehw", - "gjsjohnmurray", - "IllusionMH" - ], - "action": "close", - "reason": "not_planned", - "addLabel": "*caused-by-extension", - "comment": "It looks like this is caused by the Python extension. Please file the issue to the [Python extension repository](https://github.com/microsoft/vscode-python). Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting) for more information.\n\nHappy Coding!" - }, - { - "type": "comment", - "name": "extJupyter", - "allowUsers": [ - "cleidigh", - "usernamehw", - "gjsjohnmurray", - "IllusionMH" - ], - "action": "close", - "reason": "not_planned", - "addLabel": "*caused-by-extension", - "comment": "It looks like this is caused by the Jupyter extension. Please file the issue to the [Jupyter extension repository](https://github.com/microsoft/vscode-jupyter). Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting) for more information.\n\nHappy Coding!" - }, - { - "type": "comment", - "name": "extC", - "allowUsers": [ - "cleidigh", - "usernamehw", - "gjsjohnmurray", - "IllusionMH" - ], - "action": "close", - "reason": "not_planned", - "addLabel": "*caused-by-extension", - "comment": "It looks like this is caused by the C extension. Please file the issue to the [C extension repository](https://github.com/microsoft/vscode-cpptools). Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting) for more information.\n\nHappy Coding!" - }, - { - "type": "comment", - "name": "extC++", - "allowUsers": [ - "cleidigh", - "usernamehw", - "gjsjohnmurray", - "IllusionMH" - ], - "action": "close", - "reason": "not_planned", - "addLabel": "*caused-by-extension", - "comment": "It looks like this is caused by the C++ extension. Please file the issue to the [C++ extension repository](https://github.com/microsoft/vscode-cpptools). Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting) for more information.\n\nHappy Coding!" - }, - { - "type": "comment", - "name": "extCpp", - "allowUsers": [ - "cleidigh", - "usernamehw", - "gjsjohnmurray", - "IllusionMH" - ], - "action": "close", - "reason": "not_planned", - "addLabel": "*caused-by-extension", - "comment": "It looks like this is caused by the C++ extension. Please file the issue to the [C++ extension repository](https://github.com/microsoft/vscode-cpptools). Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting) for more information.\n\nHappy Coding!" - }, - { - "type": "comment", - "name": "extTS", - "allowUsers": [ - "cleidigh", - "usernamehw", - "gjsjohnmurray", - "IllusionMH" - ], - "action": "close", - "reason": "not_planned", - "addLabel": "*caused-by-extension", - "comment": "It looks like this is caused by the TypeScript language service. Please file the issue to the [TypeScript repository](https://github.com/microsoft/TypeScript/). Make sure to check their [contributing guidelines](https://github.com/microsoft/TypeScript/blob/master/CONTRIBUTING.md) and provide relevant information such as the extension version you're using. See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting) for more information.\n\nHappy Coding!" - }, - { - "type": "comment", - "name": "extJS", - "allowUsers": [ - "cleidigh", - "usernamehw", - "gjsjohnmurray", - "IllusionMH" - ], - "action": "close", - "reason": "not_planned", - "addLabel": "*caused-by-extension", - "comment": "It looks like this is caused by the TypeScript/JavaScript language service. Please file the issue to the [TypeScript repository](https://github.com/microsoft/TypeScript/). Make sure to check their [contributing guidelines](https://github.com/microsoft/TypeScript/blob/master/CONTRIBUTING.md) and provide relevant information such as the extension version you're using. See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting) for more information.\n\nHappy Coding!" - }, - { - "type": "comment", - "name": "extC#", - "allowUsers": [ - "cleidigh", - "usernamehw", - "gjsjohnmurray", - "IllusionMH" - ], - "action": "close", - "reason": "not_planned", - "addLabel": "*caused-by-extension", - "comment": "It looks like this is caused by the C# extension. Please file the issue to the [C# extension repository](https://github.com/OmniSharp/omnisharp-vscode.git). Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting) for more information.\n\nHappy Coding!" - }, - { - "type": "comment", - "name": "extGo", - "allowUsers": [ - "cleidigh", - "usernamehw", - "gjsjohnmurray", - "IllusionMH" - ], - "action": "close", - "addLabel": "*caused-by-extension", - "comment": "It looks like this is caused by the Go extension. Please file the issue to the [Go extension repository](https://github.com/golang/vscode-go). Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting) for more information.\n\nHappy Coding!" - }, - { - "type": "comment", - "name": "extPowershell", - "allowUsers": [ - "cleidigh", - "usernamehw", - "gjsjohnmurray", - "IllusionMH" - ], - "action": "close", - "reason": "not_planned", - "addLabel": "*caused-by-extension", - "comment": "It looks like this is caused by the PowerShell extension. Please file the issue to the [PowerShell extension repository](https://github.com/PowerShell/vscode-powershell). Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting) for more information.\n\nHappy Coding!" - }, - { - "type": "comment", - "name": "extLiveShare", - "allowUsers": [ - "cleidigh", - "usernamehw", - "gjsjohnmurray", - "IllusionMH" - ], - "action": "close", - "reason": "not_planned", - "addLabel": "*caused-by-extension", - "comment": "It looks like this is caused by the LiveShare extension. Please file the issue to the [LiveShare repository](https://github.com/MicrosoftDocs/live-share). Make sure to check their [contributing guidelines](https://github.com/MicrosoftDocs/live-share/blob/master/CONTRIBUTING.md) and provide relevant information such as the extension version you're using. See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting) for more information.\n\nHappy Coding!" - }, - { - "type": "comment", - "name": "extDocker", - "allowUsers": [ - "cleidigh", - "usernamehw", - "gjsjohnmurray", - "IllusionMH" - ], - "action": "close", - "reason": "not_planned", - "addLabel": "*caused-by-extension", - "comment": "It looks like this is caused by the Docker extension. Please file the issue to the [Docker extension repository](https://github.com/microsoft/vscode-docker). Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting) for more information.\n\nHappy Coding!" - }, - { - "type": "comment", - "name": "extJava", - "allowUsers": [ - "cleidigh", - "usernamehw", - "gjsjohnmurray", - "IllusionMH" - ], - "action": "close", - "reason": "not_planned", - "addLabel": "*caused-by-extension", - "comment": "It looks like this is caused by the Java extension. Please file the issue to the [Java extension repository](https://github.com/redhat-developer/vscode-java). Make sure to check their [troubleshooting instructions](https://github.com/redhat-developer/vscode-java/wiki/Troubleshooting) and provide relevant information such as the extension version you're using. See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting) for more information.\n\nHappy Coding!" - }, - { - "type": "comment", - "name": "extJavaDebug", - "allowUsers": [ - "cleidigh", - "usernamehw", - "gjsjohnmurray", - "IllusionMH" - ], - "action": "close", - "reason": "not_planned", - "addLabel": "*caused-by-extension", - "comment": "It looks like this is caused by the Java Debugger extension. Please file the issue to the [Java Debugger repository](https://github.com/microsoft/vscode-java-debug). Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting) for more information.\n\nHappy Coding!" - }, - { - "type": "comment", - "name": "extCodespaces", - "allowUsers": [ - "cleidigh", - "usernamehw", - "gjsjohnmurray", - "IllusionMH" - ], - "action": "close", - "reason": "not_planned", - "addLabel": "*caused-by-extension", - "comment": "It looks like this is caused by the Codespaces extension. Please file the issue in the [Codespaces Discussion Forum](http://aka.ms/ghcs-feedback). Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting) for more information.\n\nHappy Coding!" - }, - { - "type": "comment", - "name": "extCopilot", - "allowUsers": [ - "cleidigh", - "usernamehw", - "gjsjohnmurray", - "IllusionMH" - ], - "action": "close", - "reason": "not_planned", - "addLabel": "*caused-by-extension", - "comment": "It looks like this is caused by the Copilot extension. Please file the issue in the [Copilot Discussion Forum](https://github.com/community/community/discussions/categories/copilot). Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting) for more information.\n\nHappy Coding!" - }, - { - "type": "comment", - "name": "gifPlease", - "allowUsers": [ - "cleidigh", - "usernamehw", - "gjsjohnmurray", - "IllusionMH" - ], - "action": "comment", - "addLabel": "info-needed", - "comment": "Thanks for reporting this issue! Unfortunately, it's hard for us to understand what issue you're seeing. Please help us out by providing a screen recording showing exactly what isn't working as expected. While we can work with most standard formats, `.gif` files are preferred as they are displayed inline on GitHub. You may find https://gifcap.dev helpful as a browser-based gif recording tool.\n\nIf the issue depends on keyboard input, you can help us by enabling screencast mode for the recording (`Developer: Toggle Screencast Mode` in the command palette). Lastly, please attach this file via the GitHub web interface as emailed responses will strip files out from the issue.\n\nHappy coding!" - }, - { - "type": "comment", - "name": "confirmPlease", - "allowUsers": [ - "cleidigh", - "usernamehw", - "gjsjohnmurray", - "IllusionMH" - ], - "action": "comment", - "addLabel": "info-needed", - "comment": "Please diagnose the root cause of the issue by running the command `F1 > Help: Troubleshoot Issue` and following the instructions. Once you have done that, please update the issue with the results.\n\nHappy Coding!" - }, - { - "__comment__": "Allows folks on the team to label issues by commenting: `\\label My-Label` ", - "type": "comment", - "name": "label", - "allowUsers": [] - }, - { - "type": "comment", - "name": "assign", - "allowUsers": [ - "cleidigh", - "usernamehw", - "gjsjohnmurray", - "IllusionMH" - ] - }, - { - "type": "label", - "name": "*workspace-trust-docs", - "action": "close", - "reason": "not_planned", - "comment": "This issue appears to be the result of the new workspace trust feature shipped in June 2021. This security-focused feature has major impact on the functionality of VS Code. Due to the volume of issues, we ask that you take some time to review our [comprehensive documentation](https://aka.ms/vscode-workspace-trust) on the feature. If your issue is still not resolved, please let us know." - }, - { - "type": "label", - "name": "~verification-steps-needed", - "action": "updateLabels", - "addLabel": "verification-steps-needed", - "removeLabel": "~verification-steps-needed", - "comment": "Friendly ping for the VS Code team member who owns this issue- Looks like this issue requires some further steps to be verified. Please provide us with the steps necessary to verify this issue." - }, - { - "type": "label", - "name": "~info-needed", - "action": "updateLabels", - "addLabel": "info-needed", - "removeLabel": "~info-needed", - "comment": "Thanks for creating this issue! We figured it's missing some basic information or in some other way doesn't follow our [issue reporting guidelines](https://aka.ms/vscodeissuereporting). Please take the time to review these and update the issue.\n\nFor Copilot Issues, be sure to visit our [Copilot-specific guidelines](https://github.com/microsoft/vscode/wiki/Copilot-Issues) page for details on the necessary information.\n\nHappy Coding!" - }, - { - "type": "label", - "name": "~version-info-needed", - "action": "updateLabels", - "addLabel": "info-needed", - "removeLabel": "~version-info-needed", - "comment": "Thanks for creating this issue! We figured it's missing some basic information, such as a version number, or in some other way doesn't follow our [issue reporting guidelines](https://aka.ms/vscodeissuereporting). Please take the time to review these and update the issue.\n\nHappy Coding!" - }, - { - "type": "label", - "name": "~confirmation-needed", - "action": "updateLabels", - "addLabel": "info-needed", - "removeLabel": "~confirmation-needed", - "comment": "Please diagnose the root cause of the issue by running the command `F1 > Help: Troubleshoot Issue` and following the instructions. Once you have done that, please update the issue with the results.\n\nHappy Coding!" - }, - { - "type": "label", - "name": "~chat-rate-limiting", - "removeLabel": "~chat-rate-limiting", - "action": "close", - "reason": "duplicate", - "comment": "This issue is a duplicate of https://github.com/microsoft/vscode/issues/253124. Please refer to that issue for updates and discussions. Feel free to open a new issue if you think this is a different problem." - }, - { - "type": "label", - "name": "~chat-request-failed", - "removeLabel": "~chat-request-failed", - "action": "close", - "reason": "duplicate", - "comment": "This issue is a duplicate of https://github.com/microsoft/vscode/issues/253136. Please refer to that issue for updates and discussions. Feel free to open a new issue if you think this is a different problem." - }, - { - "type": "label", - "name": "~chat-rai-content-filters", - "removeLabel": "~chat-rai-content-filters", - "action": "close", - "reason": "duplicate", - "comment": "This issue is a duplicate of https://github.com/microsoft/vscode/issues/253130. Please refer to that issue for updates and discussions. Feel free to open a new issue if you think this is a different problem." - }, - { - "type": "label", - "name": "~chat-public-code-blocking", - "removeLabel": "~chat-public-code-blocking", - "action": "close", - "reason": "duplicate", - "comment": "This issue is a duplicate of https://github.com/microsoft/vscode/issues/253129. Please refer to that issue for updates and discussions. Feel free to open a new issue if you think this is a different problem." - }, - { - "type": "label", - "name": "~chat-lm-unavailable", - "removeLabel": "~chat-lm-unavailable", - "action": "close", - "reason": "duplicate", - "comment": "This issue is a duplicate of https://github.com/microsoft/vscode/issues/253137. Please refer to that issue for updates and discussions. Feel free to open a new issue if you think this is a different problem." - }, - { - "type": "label", - "name": "~chat-authentication", - "removeLabel": "~chat-authentication", - "action": "close", - "reason": "duplicate", - "comment": "Please look at the following meta issue: https://github.com/microsoft/vscode/issues/253132, if the bug you are experiencing is not there, please comment on this closed issue thread so we can re-open it.", - "assign": [ - "TylerLeonhardt" - ] - }, - { - "type": "label", - "name": "~chat-no-response-returned", - "removeLabel": "~chat-no-response-returned", - "action": "close", - "reason": "duplicate", - "comment": "Please look at the following meta issue: https://github.com/microsoft/vscode/issues/253126. Please refer to that issue for updates and discussions. Feel free to open a new issue if you think this is a different problem." - }, - { - "type": "label", - "name": "~chat-billing", - "removeLabel": "~chat-billing", - "addLabel": "chat-billing", - "action": "close", - "reason": "duplicate", - "comment": "Please look at the following meta issue: https://github.com/microsoft/vscode/issues/252230. Please refer to that issue for updates and discussions. Feel free to open a new issue if you think this is a different problem." - }, - { - "type": "label", - "name": "~chat-infinite-response-loop", - "removeLabel": "~chat-infinite-response-loop", - "addLabel": "chat-infinite-response-loop", - "action": "close", - "reason": "duplicate", - "comment": "Please look at the following meta issue: https://github.com/microsoft/vscode/issues/253134. Please refer to that issue for updates and discussions. Feel free to open a new issue if you think this is a different problem." - }, - { - "type": "label", - "name": "~spam", - "removeLabel": "~spam", - "addLabel": "spam", - "action": "close", - "reason": "not_planned", - "comment": "Thank you for your submission. This issue has been closed as it doesn't meet our community guidelines or appears to be spam.\n\n**If you believe this was closed in error:**\n- Please review our [Code of Conduct](https://opensource.microsoft.com/codeofconduct/)\n- Ensure your issue contains a clear description of the problem or feature request\n- Feel free to open a new issue with appropriate detail if this was a legitimate concern\n\n**For legitimate issues, please include:**\n- Clear description of the problem\n- Steps to reproduce (for bugs)\n- Expected vs actual behavior\n- VS Code version and environment details\n\nThank you for helping us maintain a welcoming and productive community." - }, - { - "type": "label", - "name": "~capi", - "addLabel": "capi", - "removeLabel": "~capi", - "assign": [ - "rheapatel", - "sharonlo" - ], - "comment": "Thank you for creating this issue! Please provide one or more `requestIds` to help the platform team investigate. You can follow instructions [found here](https://github.com/microsoft/vscode/wiki/Copilot-Issues#language-model-requests-and-responses) to locate the `requestId` value.\n\nHappy Coding!" - }, - { - "type": "label", - "name": "*edu", - "action": "close", - "reason": "not_planned", - "comment": "We closed this issue because it seems to be about coursework or grading. This issue tracker is for issues about VS Code itself. For coursework-related issues, or issues related to your course's specific VS Code setup, please consider engaging directly with your course instructor.\n\nHappy Coding!" - }, - { - "type": "comment", - "name": "edu", - "allowUsers": [ - "cleidigh", - "usernamehw", - "gjsjohnmurray", - "IllusionMH" - ], - "action": "updateLabels", - "addLabel": "*edu" - }, - { - "type": "label", - "name": "~agent-behavior", - "action": "close", - "reason": "not_planned", - "addLabel": "agent-behavior", - "removeLabel": "~agent-behavior", - "comment": "Unfortunately I think you are hitting a AI quality issue that is not actionable enough for us to track a bug. We would recommend that you try other available models and look at the [Tips and tricks for Copilot in VS Code](https://code.visualstudio.com/docs/copilot/copilot-tips-and-tricks) doc page.\n\nWe are constantly improving AI quality in every release, thank you for the feedback! If you believe this is a technical bug, we recommend you report a new issue including logs described on the [Copilot Issues](https://github.com/microsoft/vscode/wiki/Copilot-Issues) wiki page." - }, - { - "type": "label", - "name": "~accessibility-sla", - "addLabel": "accessibility-sla", - "removeLabel": "~accessibility-sla", - "comment": "The Visual Studio and VS Code teams have an agreement with the Accessibility team that 3:1 contrast is enough for inside the editor." - }, - { - "type": "comment", - "name": "requires-eval-assessment", - "action": "updateLabels", - "addLabel": "~requires-eval-assessment" - } -] diff --git a/.github/dependabot.yml b/.github/dependabot.yml index f7e3481c75b..ecd78379877 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -4,6 +4,10 @@ updates: directory: "/" schedule: interval: "weekly" + - package-ecosystem: "npm" + directory: "/" + schedule: + interval: "weekly" - package-ecosystem: "devcontainers" # https://containers.dev/guide/dependabot directory: "/" schedule: diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 5335e645320..f98a503c36b 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -1,7 +1,13 @@ - +## Summary + + + +## Validation + + + +- [ ] Pointer branding is preserved. +- [ ] TypeScript or build checks were run for touched areas. +- [ ] Relevant tests were run, or the reason they were skipped is documented. +- [ ] No generated artifacts, secrets, tokens, or local tool files are included. +- [ ] Release/docs changes are included when commands, artifacts, or product metadata changed. diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0b9c2845185..a7c4f54e1c0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -49,6 +49,12 @@ jobs: if (pkg.name !== 'pointer-dev') { throw new Error(`package.json name must be pointer-dev, got ${pkg.name}`); } + const expectedRepo = 'https://github.com/PointerIDE/Pointer'; + for (const key of ['licenseUrl', 'serverLicenseUrl', 'reportIssueUrl']) { + if (!String(product[key] ?? '').startsWith(expectedRepo)) { + throw new Error(`product.json ${key} must point at ${expectedRepo}`); + } + } console.log(`Pointer ${pkg.version} metadata looks good.`); NODE @@ -84,6 +90,31 @@ jobs: fi done + - name: Guard against committed secrets + shell: bash + run: | + if git grep -n -I -E 'BEGIN (RSA|OPENSSH|DSA|EC|PGP) PRIVATE KEY|gh[pousr]_[A-Za-z0-9_]{36,}|github_pat_[A-Za-z0-9_]{22,}_[A-Za-z0-9_]{59,}|sk-(proj-)?[A-Za-z0-9_-]{32,}|xox[baprs]-[A-Za-z0-9-]{20,}' -- . ':!package-lock.json' ':!**/test/**' ':!**/tests/**' ':!**/fixtures/**' ':!**/*.spec.ts'; then + echo "::error::Potential committed secret found" + exit 1 + fi + + - name: Validate README image references + run: | + node <<'NODE' + const fs = require('fs'); + const readme = fs.readFileSync('README.md', 'utf8'); + const imageRefs = [...readme.matchAll(/]+src="([^"]+)"/g)].map(match => match[1]); + for (const ref of imageRefs) { + if (/^https?:\/\//.test(ref)) { + continue; + } + if (!fs.existsSync(decodeURIComponent(ref))) { + throw new Error(`README image reference is missing: ${ref}`); + } + } + console.log(`Validated ${imageRefs.length} README image references.`); + NODE + typecheck: name: TypeScript compile check runs-on: ubuntu-latest diff --git a/.github/workflows/windows-release.yml b/.github/workflows/windows-release.yml index e6a6c7b1b91..9240ecfc062 100644 --- a/.github/workflows/windows-release.yml +++ b/.github/workflows/windows-release.yml @@ -17,14 +17,22 @@ on: installer: description: Create Inno Setup installer type: boolean - default: false + default: true fresh: description: Force fresh dependency/native rebuild type: boolean default: false + tag: + description: Release tag + type: string + default: v1.119.0 + draft: + description: Create the GitHub release as a draft + type: boolean + default: true permissions: - contents: read + contents: write jobs: build: @@ -52,3 +60,44 @@ jobs: path: .build/artifacts/** if-no-files-found: error + - name: Create GitHub draft release + if: inputs.zip && inputs.installer + env: + GH_TOKEN: ${{ github.token }} + shell: pwsh + run: | + $tag = '${{ inputs.tag }}' + $arch = '${{ inputs.arch }}' + $version = (Get-Content package.json -Raw | ConvertFrom-Json).version + $zipPath = ".build/artifacts/Pointer-win32-$arch.zip" + $installerPath = ".build/artifacts/PointerSetup-$arch-$version.exe" + + foreach ($asset in @($zipPath, $installerPath)) { + if (-not (Test-Path $asset)) { + throw "Release asset was not found: $asset" + } + } + + $notesPath = Join-Path $env:RUNNER_TEMP 'pointer-release-notes.md' + @" + # Pointer $tag + + First public Pointer Windows x64 release draft. + + Assets: + - Pointer-win32-$arch.zip: portable app archive. + - PointerSetup-$arch-$version.exe: current-user Windows installer. + + Notes: + - Pointer is an independent open-source editor distribution. + - This build is not Microsoft-signed. + - Windows builds are currently unsigned; verify assets from this GitHub release before installing. + "@ | Set-Content -Path $notesPath -Encoding UTF8 + + $releaseArgs = @('release', 'create', $tag, $zipPath, $installerPath, '--title', "Pointer $tag", '--notes-file', $notesPath, '--target', $env:GITHUB_SHA) + if ('${{ inputs.draft }}' -eq 'true') { + $releaseArgs += '--draft' + } + + gh @releaseArgs + diff --git a/README.md b/README.md index 44bcb8f5ba0..78ce6179454 100644 --- a/README.md +++ b/README.md @@ -137,6 +137,7 @@ Build logs are stored under `.codex-tools\logs\`. The latest run is referenced b - [docs/PROJECT_GUIDE.md](docs/PROJECT_GUIDE.md) - complete human and coding-AI project guide - [docs/TECH_STACK.md](docs/TECH_STACK.md) - short technical stack and ownership map - [docs/RELEASE.md](docs/RELEASE.md) - release build, artifacts, logs, and troubleshooting +- [docs/LAUNCH_CHECKLIST.md](docs/LAUNCH_CHECKLIST.md) - public release readiness and smoke-test checklist - [AGENTS.md](AGENTS.md) - root instructions for coding agents - [.github/copilot-instructions.md](.github/copilot-instructions.md) - Copilot-style coding agent rules - [CONTRIBUTING.md](CONTRIBUTING.md) - contribution workflow and review checklist @@ -160,3 +161,5 @@ Start with [CONTRIBUTING.md](CONTRIBUTING.md) and [docs/PROJECT_GUIDE.md](docs/P ## License Pointer retains the original [MIT license](LICENSE.txt) for upstream-derived code and ships as an independently branded product. + +Windows release builds are currently unsigned. Verify installers and ZIP archives from the official Pointer GitHub Releases page before installing. diff --git a/SECURITY.md b/SECURITY.md index 656f79188d6..480ee350954 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -1,14 +1,14 @@ - +# Security Policy -## Security +Pointer takes security reports seriously. -Microsoft takes the security of our software products and services seriously, which -includes all source code repositories in our GitHub organizations. +Please do not report suspected vulnerabilities through public GitHub issues. Use +GitHub's private vulnerability reporting for this repository when it is available, +or contact a maintainer privately before publishing details. -**Please do not report security vulnerabilities through public GitHub issues.** +When reporting a vulnerability, include the Pointer version, operating system, +affected feature, reproduction steps, and any logs or proof-of-concept material +that can be shared safely. -For security reporting information, locations, contact information, and policies, -please review the latest guidance for Microsoft repositories at -[https://aka.ms/SECURITY.md](https://aka.ms/SECURITY.md). - - +Pointer's Windows builds are currently unsigned. Verify release assets from the +official GitHub Releases page before installing them. diff --git a/build/lib/copilot.ts b/build/lib/copilot.ts index 8caf5805631..14dec32a336 100644 --- a/build/lib/copilot.ts +++ b/build/lib/copilot.ts @@ -13,9 +13,33 @@ import * as path from 'path'; export const copilotPlatforms = [ 'darwin-arm64', 'darwin-x64', 'linux-arm64', 'linux-x64', + 'linuxmusl-arm64', 'linuxmusl-x64', 'win32-arm64', 'win32-x64', ]; +const clipboardNativePlatforms = [ + 'darwin-arm64', 'darwin-x64', + 'linux-arm64-gnu', 'linux-x64-gnu', + 'win32-arm64-msvc', 'win32-x64-msvc', +]; + +const foundryNativePlatforms = [ + 'darwin-arm64', + 'linux-x64', + 'win32-arm64', 'win32-x64', +]; + +const pvrecorderNativePlatforms = [ + 'linux/x86_64', + 'mac/arm64', 'mac/x86_64', + 'windows/amd64', 'windows/arm64', +]; + +const anthropicAudioCapturePlatforms = [ + 'arm64-darwin', 'arm64-linux', 'arm64-win32', + 'x64-darwin', 'x64-linux', 'x64-win32', +]; + /** * Converts Pointer build platform/arch to the values that Node.js reports * at runtime via `process.platform` and `process.arch`. @@ -41,6 +65,44 @@ function toNodePlatformArch(platform: string, arch: string): { nodePlatform: str return { nodePlatform, nodeArch }; } +function getClipboardNativePlatform(nodePlatform: string, nodeArch: string): string | undefined { + if (nodePlatform === 'win32') { + return `win32-${nodeArch}-msvc`; + } + if (nodePlatform === 'linux') { + return `linux-${nodeArch}-gnu`; + } + if (nodePlatform === 'darwin') { + return `darwin-${nodeArch}`; + } + + return undefined; +} + +function getFoundryNativePlatform(nodePlatform: string, nodeArch: string): string | undefined { + const platformArch = `${nodePlatform}-${nodeArch}`; + return foundryNativePlatforms.includes(platformArch) ? platformArch : undefined; +} + +function getPvrecorderNativePlatform(nodePlatform: string, nodeArch: string): string | undefined { + if (nodePlatform === 'win32') { + return nodeArch === 'arm64' ? 'windows/arm64' : 'windows/amd64'; + } + if (nodePlatform === 'darwin') { + return nodeArch === 'arm64' ? 'mac/arm64' : 'mac/x86_64'; + } + if (nodePlatform === 'linux' && nodeArch === 'x64') { + return 'linux/x86_64'; + } + + return undefined; +} + +function getAnthropicAudioCapturePlatform(nodePlatform: string, nodeArch: string): string | undefined { + const platformArch = `${nodeArch}-${nodePlatform}`; + return anthropicAudioCapturePlatforms.includes(platformArch) ? platformArch : undefined; +} + /** * Returns a glob filter that strips @github/copilot platform packages * for architectures other than the build target. @@ -54,15 +116,66 @@ export function getCopilotExcludeFilter(platform: string, arch: string): string[ const { nodePlatform, nodeArch } = toNodePlatformArch(platform, arch); const targetPlatformArch = `${nodePlatform}-${nodeArch}`; const nonTargetPlatforms = copilotPlatforms.filter(p => p !== targetPlatformArch); + const targetClipboardPlatform = getClipboardNativePlatform(nodePlatform, nodeArch); + const targetFoundryPlatform = getFoundryNativePlatform(nodePlatform, nodeArch); + const targetPvrecorderPlatform = getPvrecorderNativePlatform(nodePlatform, nodeArch); // Strip wrong-architecture @github/copilot-{platform} packages. // All copilot prebuilds are stripped by .moduleignore; the copilot CLI SDK // resolves `node-pty` from Pointer's own node_modules via `hostRequire`. const excludes = nonTargetPlatforms.map(p => `!**/node_modules/@github/copilot-${p}/**`); + excludes.push(...clipboardNativePlatforms + .filter(p => p !== targetClipboardPlatform) + .flatMap(p => [ + `!**/node_modules/@github/copilot/clipboard/node_modules/@teddyzhu/clipboard/clipboard.${p}.node`, + `!**/node_modules/@github/copilot/clipboard/node_modules/@teddyzhu/clipboard-${p}/**` + ])); + excludes.push(...foundryNativePlatforms + .filter(p => p !== targetFoundryPlatform) + .map(p => `!**/node_modules/@github/copilot/foundry-local-sdk/node_modules/foundry-local-sdk/prebuilds/${p}/**`)); + excludes.push(...pvrecorderNativePlatforms + .filter(p => p !== targetPvrecorderPlatform) + .map(p => `!**/node_modules/@github/copilot/pvrecorder/node_modules/@picovoice/pvrecorder-node/lib/${p}/**`)); return ['**', ...excludes]; } +function removeIfExists(base: string, ...segments: string[]): void { + fs.rmSync(path.join(base, ...segments), { recursive: true, force: true }); +} + +function pruneBuiltInCopilotNativePayloads(platform: string, arch: string, extensionNodeModules: string): void { + const { nodePlatform, nodeArch } = toNodePlatformArch(platform, arch); + const targetPlatformArch = `${nodePlatform}-${nodeArch}`; + const targetClipboardPlatform = getClipboardNativePlatform(nodePlatform, nodeArch); + const targetFoundryPlatform = getFoundryNativePlatform(nodePlatform, nodeArch); + const targetPvrecorderPlatform = getPvrecorderNativePlatform(nodePlatform, nodeArch); + const targetAnthropicAudioCapturePlatform = getAnthropicAudioCapturePlatform(nodePlatform, nodeArch); + + for (const platform of copilotPlatforms.filter(p => p !== targetPlatformArch)) { + removeIfExists(extensionNodeModules, '@github', `copilot-${platform}`); + removeIfExists(extensionNodeModules, '@github', 'copilot', 'prebuilds', platform); + removeIfExists(extensionNodeModules, '@github', 'copilot', 'sdk', 'prebuilds', platform); + } + + for (const platform of clipboardNativePlatforms.filter(p => p !== targetClipboardPlatform)) { + removeIfExists(extensionNodeModules, '@github', 'copilot', 'clipboard', 'node_modules', '@teddyzhu', 'clipboard', `clipboard.${platform}.node`); + removeIfExists(extensionNodeModules, '@github', 'copilot', 'clipboard', 'node_modules', '@teddyzhu', `clipboard-${platform}`); + } + + for (const platform of foundryNativePlatforms.filter(p => p !== targetFoundryPlatform)) { + removeIfExists(extensionNodeModules, '@github', 'copilot', 'foundry-local-sdk', 'node_modules', 'foundry-local-sdk', 'prebuilds', platform); + } + + for (const platform of pvrecorderNativePlatforms.filter(p => p !== targetPvrecorderPlatform)) { + removeIfExists(extensionNodeModules, '@github', 'copilot', 'pvrecorder', 'node_modules', '@picovoice', 'pvrecorder-node', 'lib', ...platform.split('/')); + } + + for (const platform of anthropicAudioCapturePlatforms.filter(p => p !== targetAnthropicAudioCapturePlatform)) { + removeIfExists(extensionNodeModules, '@anthropic-ai', 'claude-agent-sdk', 'vendor', 'audio-capture', platform); + } +} + /** * Materializes the copilot CLI ripgrep shim directly inside the built-in copilot extension. * @@ -84,6 +197,8 @@ export function prepareBuiltInCopilotRipgrepShim(platform: string, arch: string, const platformArch = `${nodePlatform}-${nodeArch}`; const extensionNodeModules = path.join(builtInCopilotExtensionDir, 'node_modules'); + pruneBuiltInCopilotNativePayloads(platform, arch, extensionNodeModules); + const copilotBase = path.join(extensionNodeModules, '@github', 'copilot'); const copilotSdkBase = path.join(copilotBase, 'sdk'); if (!fs.existsSync(copilotSdkBase)) { diff --git a/build/win32/code.iss b/build/win32/code.iss index 8766837e104..14dadb10482 100644 --- a/build/win32/code.iss +++ b/build/win32/code.iss @@ -9,9 +9,9 @@ AppId={#AppId} AppName={#NameLong} AppVerName={#NameVersion} AppPublisher=Pointer Team -AppPublisherURL=https://github.com/pointer-editor/pointer -AppSupportURL=https://github.com/pointer-editor/pointer/issues -AppUpdatesURL=https://github.com/pointer-editor/pointer/releases +AppPublisherURL=https://github.com/PointerIDE/Pointer +AppSupportURL=https://github.com/PointerIDE/Pointer/issues +AppUpdatesURL=https://github.com/PointerIDE/Pointer/releases DefaultGroupName={#NameLong} AllowNoIcons=yes OutputDir={#OutputDir} diff --git a/docs/LAUNCH_CHECKLIST.md b/docs/LAUNCH_CHECKLIST.md new file mode 100644 index 00000000000..03818aedd61 --- /dev/null +++ b/docs/LAUNCH_CHECKLIST.md @@ -0,0 +1,49 @@ +# Pointer Launch Checklist + +Use this checklist before publishing a public Pointer release. + +## Repository Readiness + +- `product.json`, `package.json`, README badges, issue links, and release docs point to `https://github.com/PointerIDE/Pointer`. +- Public issue templates, PR template, and security policy are Pointer-specific. +- No local tool output, generated release artifacts, tokens, credentials, or private logs are tracked. +- Contributor setup works from the documented `run\start-dev.bat`, `run\start.bat`, and `run\build-pointer.bat` entrypoints. + +## Local Validation + +```bat +npm run compile-check-ts-native +npm audit --omit=dev --audit-level=high +run\build-pointer.bat --Installer --Zip +``` + +`npm audit --omit=dev` may still report the current moderate `uuid` advisory +through `@microsoft/dev-tunnels-connections` and `@vscode/deviceid`. Track it +until those upstream packages provide compatible fixed versions. + +Confirm that `.build\artifacts\` contains: + +- `Pointer-win32-x64\Pointer.exe` +- `Pointer-win32-x64.zip` +- `PointerSetup-x64-1.119.0.exe` + +## Smoke Test + +- Launch the portable app with temporary user data and extensions directories. +- Confirm the window title, product name, icon, About dialog, and Report Issue link use Pointer branding. +- Open and save a file. +- Open the integrated terminal. +- Open the Source Control view in a Git repository. +- Confirm the extension host starts without an obvious startup error. +- Install with `PointerSetup-x64-1.119.0.exe`, launch the installed app, and uninstall it cleanly. + +## Release + +- Merge the release-readiness branch after CI is green. +- Run the `Pointer Windows Release` workflow from `main`. +- Use tag `v1.119.0`, architecture `x64`, ZIP enabled, Installer enabled, Draft enabled. +- Confirm the GitHub Release is a draft and has both assets attached before publishing. + +## Signing Notice + +Pointer Windows builds are currently unsigned. Public release notes and installer docs must state this clearly until code signing is configured. diff --git a/docs/PROJECT_GUIDE.md b/docs/PROJECT_GUIDE.md index 7af81a0a6aa..88b5aeea3f8 100644 --- a/docs/PROJECT_GUIDE.md +++ b/docs/PROJECT_GUIDE.md @@ -38,6 +38,7 @@ run\start.bat | `.github/copilot-instructions.md` | Copilot-style agents | Project-wide coding instructions | | `docs/TECH_STACK.md` | Everyone | Short stack and ownership map | | `docs/RELEASE.md` | Builders/release | Release build details and troubleshooting | +| `docs/LAUNCH_CHECKLIST.md` | Maintainers/release | Public release checklist and smoke-test expectations | | `CONTRIBUTING.md` | Contributors | Workflow, validation, PR checklist | | `src/vs/sessions/README.md` | Sessions contributors | Sessions architecture | | `test/README.md` | Test authors | Test infrastructure | diff --git a/docs/RELEASE.md b/docs/RELEASE.md index e12aa3c5548..19688d91aa6 100644 --- a/docs/RELEASE.md +++ b/docs/RELEASE.md @@ -28,6 +28,7 @@ Pointer ist: - ein **eigener Rebrand** (Name, Icons, App-IDs) - **kein** offizielles Microsoft-Produkt - **nicht** Microsoft-signiert +- aktuell **nicht code-signiert** - **nicht** automatisch identisch mit irgendeinem anderen Editor-Download - **ohne** Zugang zum offiziellen Microsoft Marketplace (Open VSX wird empfohlen) @@ -76,6 +77,8 @@ run\build-pointer.bat --Installer run\build-pointer.bat --Installer --Zip ``` +Vor einem öffentlichen Release siehe zusätzlich `docs/LAUNCH_CHECKLIST.md`. + ### Alle Flags | Flag | Beschreibung | @@ -303,6 +306,7 @@ run\start-dev.bat ## Weiterführende Dokumentation - `AGENTS.md` - Vollständige Projekt-Dokumentation für Agenten +- `docs/LAUNCH_CHECKLIST.md` - Release-Checkliste, Smoke-Test und Signatur-Hinweis - `build/gulpfile.vscode.ts` - Paketierungs-Task (Quellcode) - `build/gulpfile.vscode.win32.ts` - Windows-spezifische Tasks - `build/win32/code.iss` - Inno Setup Installer-Skript diff --git a/extensions/git/package.json b/extensions/git/package.json index a7d239be94d..02b206b49cc 100644 --- a/extensions/git/package.json +++ b/extensions/git/package.json @@ -4363,6 +4363,6 @@ }, "repository": { "type": "git", - "url": "https://github.com/pointer-editor/pointer.git" + "url": "https://github.com/PointerIDE/Pointer.git" } } diff --git a/extensions/github-authentication/package.json b/extensions/github-authentication/package.json index 1f3bb622d98..d5e13960c10 100644 --- a/extensions/github-authentication/package.json +++ b/extensions/github-authentication/package.json @@ -96,6 +96,6 @@ }, "repository": { "type": "git", - "url": "https://github.com/pointer-editor/pointer.git" + "url": "https://github.com/PointerIDE/Pointer.git" } } diff --git a/extensions/microsoft-authentication/media/index.html b/extensions/microsoft-authentication/media/index.html index 6e1d81b7dfb..f41172b5471 100644 --- a/extensions/microsoft-authentication/media/index.html +++ b/extensions/microsoft-authentication/media/index.html @@ -10,7 +10,7 @@ - + Pointer
diff --git a/extensions/microsoft-authentication/package.json b/extensions/microsoft-authentication/package.json index 7c6a4f1d805..bf7d72c74c3 100644 --- a/extensions/microsoft-authentication/package.json +++ b/extensions/microsoft-authentication/package.json @@ -149,6 +149,6 @@ }, "repository": { "type": "git", - "url": "https://github.com/pointer-editor/pointer.git" + "url": "https://github.com/PointerIDE/Pointer.git" } } diff --git a/extensions/microsoft-authentication/src/node/loopbackTemplate.ts b/extensions/microsoft-authentication/src/node/loopbackTemplate.ts index 04c6c6bc1a9..aad9fab8e9a 100644 --- a/extensions/microsoft-authentication/src/node/loopbackTemplate.ts +++ b/extensions/microsoft-authentication/src/node/loopbackTemplate.ts @@ -111,7 +111,7 @@ export const loopbackTemplate = ` - + Pointer
diff --git a/extensions/theme-defaults/package.json b/extensions/theme-defaults/package.json index e396d4344e3..b1ac5c414fc 100644 --- a/extensions/theme-defaults/package.json +++ b/extensions/theme-defaults/package.json @@ -96,6 +96,6 @@ }, "repository": { "type": "git", - "url": "https://github.com/pointer-editor/pointer.git" + "url": "https://github.com/PointerIDE/Pointer.git" } } diff --git a/package-lock.json b/package-lock.json index 87d07f60690..e53817bb417 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,8 +11,8 @@ "license": "MIT", "dependencies": { "@anthropic-ai/sandbox-runtime": "0.0.49", - "@anthropic-ai/sdk": "^0.82.0", - "@github/copilot": "1.0.39", + "@anthropic-ai/sdk": "^0.98.0", + "@github/copilot": "1.0.51", "@github/copilot-sdk": "^0.3.0", "@microsoft/1ds-core-js": "^3.2.13", "@microsoft/1ds-post-js": "^3.2.13", @@ -67,7 +67,7 @@ "vscode-oniguruma": "1.7.0", "vscode-regexpp": "^3.1.0", "vscode-textmate": "^9.3.2", - "ws": "^8.19.0", + "ws": "^8.20.1", "yauzl": "^3.0.0", "yazl": "^2.4.3" }, @@ -218,12 +218,13 @@ } }, "node_modules/@anthropic-ai/sdk": { - "version": "0.82.0", - "resolved": "https://registry.npmjs.org/@anthropic-ai/sdk/-/sdk-0.82.0.tgz", - "integrity": "sha512-xdHTjL1GlUlDugHq/I47qdOKp/ROPvuHl7ROJCgUQigbvPu7asf9KcAcU1EqdrP2LuVhEKaTs7Z+ShpZDRzHdQ==", + "version": "0.98.0", + "resolved": "https://registry.npmjs.org/@anthropic-ai/sdk/-/sdk-0.98.0.tgz", + "integrity": "sha512-N7aXtCvC5g6T1Y4V29lJjceu/zTkVkIZF0jdBvagr0TRFHuKeImffalGWEfqZKrvjH+IQbzJWw6TmSmUzrlMgg==", "license": "MIT", "dependencies": { - "json-schema-to-ts": "^3.1.1" + "json-schema-to-ts": "^3.1.1", + "standardwebhooks": "^1.0.0" }, "bin": { "anthropic-ai-sdk": "bin/cli" @@ -1072,26 +1073,31 @@ } }, "node_modules/@github/copilot": { - "version": "1.0.39", - "resolved": "https://registry.npmjs.org/@github/copilot/-/copilot-1.0.39.tgz", - "integrity": "sha512-AY0VPYf6QQm88wUcOav2B36iedWKBUaMegKRxxY2uIHESiU6HueEuQR/n7D3U2UdD0zLox3jFRjYbZAsr2CgkQ==", + "version": "1.0.51", + "resolved": "https://registry.npmjs.org/@github/copilot/-/copilot-1.0.51.tgz", + "integrity": "sha512-yKXbMeApxO8P68/BeSS/lmIRsCprcMdY8MRRp+Vp/QymCv59o4lxDcAIVq2h/CD8vJHoiG4OijdWydd76yoqLw==", "license": "SEE LICENSE IN LICENSE.md", + "dependencies": { + "detect-libc": "^2.1.2" + }, "bin": { "copilot": "npm-loader.js" }, "optionalDependencies": { - "@github/copilot-darwin-arm64": "1.0.39", - "@github/copilot-darwin-x64": "1.0.39", - "@github/copilot-linux-arm64": "1.0.39", - "@github/copilot-linux-x64": "1.0.39", - "@github/copilot-win32-arm64": "1.0.39", - "@github/copilot-win32-x64": "1.0.39" + "@github/copilot-darwin-arm64": "1.0.51", + "@github/copilot-darwin-x64": "1.0.51", + "@github/copilot-linux-arm64": "1.0.51", + "@github/copilot-linux-x64": "1.0.51", + "@github/copilot-linuxmusl-arm64": "1.0.51", + "@github/copilot-linuxmusl-x64": "1.0.51", + "@github/copilot-win32-arm64": "1.0.51", + "@github/copilot-win32-x64": "1.0.51" } }, "node_modules/@github/copilot-darwin-arm64": { - "version": "1.0.39", - "resolved": "https://registry.npmjs.org/@github/copilot-darwin-arm64/-/copilot-darwin-arm64-1.0.39.tgz", - "integrity": "sha512-E8WfNL43NMzMTDDpCiYikaEmYCMAr6mz8LHrJtkaFuVXVkBr/q2NI3hAtwHFy8M11Fac/MeIe3/VEymWwwh3kw==", + "version": "1.0.51", + "resolved": "https://registry.npmjs.org/@github/copilot-darwin-arm64/-/copilot-darwin-arm64-1.0.51.tgz", + "integrity": "sha512-i713sW3GzbeLKowGVY6/A97lGkUMJNVdUD0oaUWTWmXX08u+hWsnVKbqL4EQlw7x8xU511X5vkgFMi31DWyCuQ==", "cpu": [ "arm64" ], @@ -1105,9 +1111,9 @@ } }, "node_modules/@github/copilot-darwin-x64": { - "version": "1.0.39", - "resolved": "https://registry.npmjs.org/@github/copilot-darwin-x64/-/copilot-darwin-x64-1.0.39.tgz", - "integrity": "sha512-0zbC4lDVX7l8Wvq+JSCMjO0xTN69nWLejTBCl3Ev5bP6P+/7wPURcUvZKoHEaXxOULQ3AGj0DwZNAsvvQkA/6Q==", + "version": "1.0.51", + "resolved": "https://registry.npmjs.org/@github/copilot-darwin-x64/-/copilot-darwin-x64-1.0.51.tgz", + "integrity": "sha512-c67SbMznclcHqlJINXBCwudhqRgE5HNaY9fqMQqu954+ezVa6Q/2hwhCU51PNbYLWtZTGgXsgWnrxOg77hh0ug==", "cpu": [ "x64" ], @@ -1121,9 +1127,9 @@ } }, "node_modules/@github/copilot-linux-arm64": { - "version": "1.0.39", - "resolved": "https://registry.npmjs.org/@github/copilot-linux-arm64/-/copilot-linux-arm64-1.0.39.tgz", - "integrity": "sha512-x88FuByweJlHlAmUZXjq4JlmtqgoM57Fe7nXzQkGr2Y5wnc2EDydBzFYEOlYDSWozQreimaJIm0KEMAA5T8/Fg==", + "version": "1.0.51", + "resolved": "https://registry.npmjs.org/@github/copilot-linux-arm64/-/copilot-linux-arm64-1.0.51.tgz", + "integrity": "sha512-MlQeTB4CSPnG2BZTxsPSV5a7rjsqFOzhTCVCNjLeht3ODObWjrIYhtzVF7h/nue9ii96u9RBB0gIAfoBReryTw==", "cpu": [ "arm64" ], @@ -1137,9 +1143,9 @@ } }, "node_modules/@github/copilot-linux-x64": { - "version": "1.0.39", - "resolved": "https://registry.npmjs.org/@github/copilot-linux-x64/-/copilot-linux-x64-1.0.39.tgz", - "integrity": "sha512-ssahg8r7a0VCsHVXPRmFFXx70xNAxaTM2SZfG7qPRfFB2OM8gHrW26F2oikTklDF6D+A2MfSAMpzJLBUZbPnhw==", + "version": "1.0.51", + "resolved": "https://registry.npmjs.org/@github/copilot-linux-x64/-/copilot-linux-x64-1.0.51.tgz", + "integrity": "sha512-fniGTwR5KLFfNDjSFbWvZ3Bno+2bXsMdNM0l3dFHwVTHyBqQSXZ3xvEEDadGimCxgKfRDRt1M1FYnUpqhLYf/Q==", "cpu": [ "x64" ], @@ -1152,6 +1158,38 @@ "copilot-linux-x64": "copilot" } }, + "node_modules/@github/copilot-linuxmusl-arm64": { + "version": "1.0.51", + "resolved": "https://registry.npmjs.org/@github/copilot-linuxmusl-arm64/-/copilot-linuxmusl-arm64-1.0.51.tgz", + "integrity": "sha512-vg9sWZw4u/bqHa7ylF/GZeuznt+k4/Em899C++CTBU4CKhtAaxd2TZDsEV0Ap2DXzP2UFxCn77vZoHyxByMI5A==", + "cpu": [ + "arm64" + ], + "license": "SEE LICENSE IN LICENSE.md", + "optional": true, + "os": [ + "linux" + ], + "bin": { + "copilot-linuxmusl-arm64": "copilot" + } + }, + "node_modules/@github/copilot-linuxmusl-x64": { + "version": "1.0.51", + "resolved": "https://registry.npmjs.org/@github/copilot-linuxmusl-x64/-/copilot-linuxmusl-x64-1.0.51.tgz", + "integrity": "sha512-zxXRdzjshHTQd/LDWmOIDXt0T8nvw66ue6cneAXHhLXWzuiv5mqPKnxuHQyvQDt+IBEyq9utuetlKxcAVo+gYw==", + "cpu": [ + "x64" + ], + "license": "SEE LICENSE IN LICENSE.md", + "optional": true, + "os": [ + "linux" + ], + "bin": { + "copilot-linuxmusl-x64": "copilot" + } + }, "node_modules/@github/copilot-sdk": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/@github/copilot-sdk/-/copilot-sdk-0.3.0.tgz", @@ -1176,9 +1214,9 @@ } }, "node_modules/@github/copilot-win32-arm64": { - "version": "1.0.39", - "resolved": "https://registry.npmjs.org/@github/copilot-win32-arm64/-/copilot-win32-arm64-1.0.39.tgz", - "integrity": "sha512-hhBWGZQIywbp6MBxlqMX2GSmHqtUAOGwpo9b0igscecL4i0kz89QNasC+mKiN+zFEHP6I8gggOu87XPI17Io8Q==", + "version": "1.0.51", + "resolved": "https://registry.npmjs.org/@github/copilot-win32-arm64/-/copilot-win32-arm64-1.0.51.tgz", + "integrity": "sha512-/SP8DfOukjllCXavgBNI0qwJa+8hCFRNK7Q3/Q3qzAOvaWUZZkabKSVZfXaGxerTGpGq009Zg3nyIPR0jfm60w==", "cpu": [ "arm64" ], @@ -1192,9 +1230,9 @@ } }, "node_modules/@github/copilot-win32-x64": { - "version": "1.0.39", - "resolved": "https://registry.npmjs.org/@github/copilot-win32-x64/-/copilot-win32-x64-1.0.39.tgz", - "integrity": "sha512-0ehlMtBiwKjmfEY3hVZggdn7qrmPMC8ueBQv/b+6UY3SMRS/M/1Y7xkOCwG84NvJsktdSsk3SlQnE2LbkTVpSA==", + "version": "1.0.51", + "resolved": "https://registry.npmjs.org/@github/copilot-win32-x64/-/copilot-win32-x64-1.0.51.tgz", + "integrity": "sha512-ZB5Jr9m4ZR8gFOwXnYGNfdU+bMFeUgj1OCU3x64Tx5GC6Uln/pf8Ue5LHlsBkBq/NuKvkp/g4GARDIHBCKXEnQ==", "cpu": [ "x64" ], @@ -2496,6 +2534,12 @@ "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==", "dev": true }, + "node_modules/@stablelib/base64": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/base64/-/base64-1.0.1.tgz", + "integrity": "sha512-1bnPQqSxSuc3Ii6MhBysoWCg58j97aUjuCSZrGSmDxNqtytIi0k8utUenAwTZN4V5mXXYGsVUI9zeBqy+jBOSQ==", + "license": "MIT" + }, "node_modules/@stylistic/eslint-plugin-ts": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-ts/-/eslint-plugin-ts-2.8.0.tgz", @@ -4945,16 +4989,42 @@ "license": "MIT" }, "node_modules/axios": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.15.0.tgz", - "integrity": "sha512-wWyJDlAatxk30ZJer+GeCWS209sA42X+N5jU2jy6oHTp7ufw8uzUTVFBX9+wTfAlhiJXGS0Bq7X6efruWjuK9Q==", + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.16.1.tgz", + "integrity": "sha512-caYkukvroVPO8KrzuJEb50Hm07KwfBZPEC3VeFHTsqWHvKTsy54hjJz9BS/cdaypROE2rH6xvm9mHX4fgWkr3A==", "license": "MIT", "dependencies": { - "follow-redirects": "^1.15.11", + "follow-redirects": "^1.16.0", "form-data": "^4.0.5", + "https-proxy-agent": "^5.0.1", "proxy-from-env": "^2.1.0" } }, + "node_modules/axios/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/axios/node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/axios/node_modules/proxy-from-env": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz", @@ -5665,26 +5735,6 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==" }, - "node_modules/chrome-remote-interface/node_modules/ws": { - "version": "7.5.10", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", - "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/chromium-pickle-js": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz", @@ -6738,9 +6788,9 @@ } }, "node_modules/detect-libc": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", - "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", "license": "Apache-2.0", "engines": { "node": ">=8" @@ -7979,16 +8029,6 @@ "express": ">= 4.11" } }, - "node_modules/express-rate-limit/node_modules/ip-address": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", - "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 12" - } - }, "node_modules/express/node_modules/accepts": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", @@ -8236,6 +8276,12 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, + "node_modules/fast-sha256": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-sha256/-/fast-sha256-1.3.0.tgz", + "integrity": "sha512-n11RGP/lrWEFI/bWdygLxhI+pVeo1ZYIVwvvPkW7azl/rOy+F3HYRZ2K5zeE9mmkhQppyv9sQFx0JM9UabnpPQ==", + "license": "Unlicense" + }, "node_modules/fast-uri": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", @@ -11397,13 +11443,10 @@ } }, "node_modules/ip-address": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", - "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", - "dependencies": { - "jsbn": "1.1.0", - "sprintf-js": "^1.1.3" - }, + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.2.0.tgz", + "integrity": "sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA==", + "license": "MIT", "engines": { "node": ">= 12" } @@ -12367,11 +12410,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jsbn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", - "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==" - }, "node_modules/jschardet": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/jschardet/-/jschardet-3.1.4.tgz", @@ -17232,7 +17270,9 @@ "node_modules/sprintf-js": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", - "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==" + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "dev": true, + "optional": true }, "node_modules/ssh2": { "version": "1.17.0", @@ -17267,6 +17307,16 @@ "node": "*" } }, + "node_modules/standardwebhooks": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/standardwebhooks/-/standardwebhooks-1.0.0.tgz", + "integrity": "sha512-BbHGOQK9olHPMvQNHWul6MYlrRTAOKn03rOe4A8O3CLWhNf4YHBqq2HJKKC+sfqpxiBY52pNeesD6jIiLDz8jg==", + "license": "MIT", + "dependencies": { + "@stablelib/base64": "^1.0.0", + "fast-sha256": "^1.3.0" + } + }, "node_modules/static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", @@ -19510,9 +19560,9 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/ws": { - "version": "8.19.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", - "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", + "version": "8.20.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.20.1.tgz", + "integrity": "sha512-It4dO0K5v//JtTXuPkfEOaI3uUN87iYPnqo/ZzqCoG3g8uhA66QUMs/SrM0YK7/NAu+r4LMh/9dq2A7k+rHs+w==", "license": "MIT", "engines": { "node": ">=10.0.0" diff --git a/package.json b/package.json index 6542b412db0..6be3a973132 100644 --- a/package.json +++ b/package.json @@ -88,8 +88,8 @@ }, "dependencies": { "@anthropic-ai/sandbox-runtime": "0.0.49", - "@anthropic-ai/sdk": "^0.82.0", - "@github/copilot": "1.0.39", + "@anthropic-ai/sdk": "^0.98.0", + "@github/copilot": "1.0.51", "@github/copilot-sdk": "^0.3.0", "@microsoft/1ds-core-js": "^3.2.13", "@microsoft/1ds-post-js": "^3.2.13", @@ -144,7 +144,7 @@ "vscode-oniguruma": "1.7.0", "vscode-regexpp": "^3.1.0", "vscode-textmate": "^9.3.2", - "ws": "^8.19.0", + "ws": "^8.20.1", "yauzl": "^3.0.0", "yazl": "^2.4.3" }, @@ -256,16 +256,19 @@ "node-addon-api": "7.1.0" }, "serialize-javascript": "^7.0.3", + "axios": "^1.16.1", + "ip-address": "^10.2.0", + "ws": "^8.20.1", "ssh2": { "cpu-features": "0.0.0" } }, "repository": { "type": "git", - "url": "https://github.com/pointer-editor/pointer.git" + "url": "https://github.com/PointerIDE/Pointer.git" }, "bugs": { - "url": "https://github.com/pointer-editor/pointer/issues" + "url": "https://github.com/PointerIDE/Pointer/issues" }, "optionalDependencies": { "windows-foreground-love": "0.6.1" diff --git a/product.json b/product.json index 96115eb9be2..71b5d366e97 100644 --- a/product.json +++ b/product.json @@ -6,8 +6,8 @@ "sharedDataFolderName": ".pointer-shared", "win32MutexName": "pointer", "licenseName": "MIT", - "licenseUrl": "https://github.com/pointer-editor/pointer/blob/main/LICENSE.txt", - "serverLicenseUrl": "https://github.com/pointer-editor/pointer/blob/main/LICENSE.txt", + "licenseUrl": "https://github.com/PointerIDE/Pointer/blob/main/LICENSE.txt", + "serverLicenseUrl": "https://github.com/PointerIDE/Pointer/blob/main/LICENSE.txt", "serverGreeting": [], "serverLicense": [], "serverLicensePrompt": "", @@ -30,7 +30,7 @@ "darwinProfilePayloadUUID": "6B8D17E3-2853-41E6-9E41-221CF4AF3C95", "linuxIconName": "pointer", "licenseFileName": "LICENSE.txt", - "reportIssueUrl": "https://github.com/pointer-editor/pointer/issues/new", + "reportIssueUrl": "https://github.com/PointerIDE/Pointer/issues/new/choose", "nodejsRepository": "https://nodejs.org", "urlProtocol": "pointer", "webviewContentExternalBaseUrlTemplate": "https://{{uuid}}.vscode-cdn.net/insider/ef65ac1ba57f57f2a3961bfe94aa20481caca4c6/out/vs/workbench/contrib/webview/browser/pre/", diff --git a/resources/linux/code.appdata.xml b/resources/linux/code.appdata.xml index a915b133a5c..77bef66245b 100644 --- a/resources/linux/code.appdata.xml +++ b/resources/linux/code.appdata.xml @@ -4,14 +4,14 @@ @@LICENSE@@ @@LICENSE@@ @@NAME_LONG@@ - https://github.com/pointer-editor/pointer + https://github.com/PointerIDE/Pointer Pointer. Code editing, sharpened.

Pointer is a focused code editor for the edit-build-debug cycle, rebranded with the Pointer visual identity.

- https://github.com/pointer-editor/pointer/raw/main/resources/linux/code.png + https://github.com/PointerIDE/Pointer/raw/main/resources/linux/code.png Editing TypeScript and searching for extensions diff --git a/resources/linux/debian/control.template b/resources/linux/debian/control.template index 98b3c06ae80..1d04a65eb58 100644 --- a/resources/linux/debian/control.template +++ b/resources/linux/debian/control.template @@ -6,7 +6,7 @@ Recommends: @@RECOMMENDS@@ Priority: optional Architecture: @@ARCHITECTURE@@ Maintainer: Pointer Team -Homepage: https://github.com/pointer-editor/pointer +Homepage: https://github.com/PointerIDE/Pointer Installed-Size: @@INSTALLEDSIZE@@ Provides: visual-studio-@@NAME@@ Conflicts: visual-studio-@@NAME@@ diff --git a/resources/linux/rpm/code.spec.template b/resources/linux/rpm/code.spec.template index 0b9ac380f6b..cb0bdbedd56 100644 --- a/resources/linux/rpm/code.spec.template +++ b/resources/linux/rpm/code.spec.template @@ -6,7 +6,7 @@ Group: Development/Tools Vendor: Pointer Team Packager: Pointer Team License: @@LICENSE@@ -URL: https://github.com/pointer-editor/pointer +URL: https://github.com/PointerIDE/Pointer Icon: @@NAME@@.xpm Requires: @@DEPENDENCIES@@ Recommends: @@RECOMMENDS@@ diff --git a/resources/win32/appx/AppxManifest.xml b/resources/win32/appx/AppxManifest.xml index 6d057c42414..e9e9c299bdb 100644 --- a/resources/win32/appx/AppxManifest.xml +++ b/resources/win32/appx/AppxManifest.xml @@ -15,12 +15,12 @@ IgnorableNamespaces="uap uap2 uap3 rescap desktop desktop4 desktop5 desktop6 desktop10 uap10 com"> @@AppxPackageDisplayName@@ - Microsoft Corporation + Pointer Team resources\app\resources\win32\code_150x150.png true disabled diff --git a/src/vs/sessions/contrib/policyBlocked/browser/sessionsPolicyBlocked.ts b/src/vs/sessions/contrib/policyBlocked/browser/sessionsPolicyBlocked.ts index 97ca40413c1..6afa08f4a5f 100644 --- a/src/vs/sessions/contrib/policyBlocked/browser/sessionsPolicyBlocked.ts +++ b/src/vs/sessions/contrib/policyBlocked/browser/sessionsPolicyBlocked.ts @@ -93,10 +93,10 @@ export class SessionsPolicyBlockedOverlay extends Disposable { append(description, document.createTextNode(' ')); const learnMore = append(description, $('a.sessions-policy-blocked-link')) as HTMLAnchorElement; learnMore.textContent = localize('policyBlocked.learnMore', "Learn more"); - learnMore.href = 'https://github.com/pointer-editor/pointer/docs'; + learnMore.href = 'https://github.com/PointerIDE/Pointer/docs'; this._register(addDisposableListener(learnMore, EventType.CLICK, (e) => { e.preventDefault(); - this.openerService.open(URI.parse('https://github.com/pointer-editor/pointer/docs')); + this.openerService.open(URI.parse('https://github.com/PointerIDE/Pointer/docs')); })); const button = this._register(new Button(card, { ...defaultButtonStyles, secondary: true })); @@ -145,10 +145,10 @@ export class SessionsPolicyBlockedOverlay extends Disposable { append(footer, document.createTextNode(' ')); const learnMore = append(footer, $('a.sessions-policy-blocked-link')) as HTMLAnchorElement; learnMore.textContent = localize('accountGate.learnMore', "Learn more"); - learnMore.href = 'https://github.com/pointer-editor/pointer/docs/enterprise'; + learnMore.href = 'https://github.com/PointerIDE/Pointer/docs/enterprise'; this._register(addDisposableListener(learnMore, EventType.CLICK, (e) => { e.preventDefault(); - this.openerService.open(URI.parse('https://github.com/pointer-editor/pointer/docs/enterprise')); + this.openerService.open(URI.parse('https://github.com/PointerIDE/Pointer/docs/enterprise')); })); const signInButton = this._register(new Button(card, { ...defaultButtonStyles })); diff --git a/src/vs/workbench/contrib/extensions/browser/extensionsActions.ts b/src/vs/workbench/contrib/extensions/browser/extensionsActions.ts index 4a8050558ac..b154d5afb0e 100644 --- a/src/vs/workbench/contrib/extensions/browser/extensionsActions.ts +++ b/src/vs/workbench/contrib/extensions/browser/extensionsActions.ts @@ -168,7 +168,7 @@ export class PromptExtensionInstallFailureAction extends Action { detail: getErrorMessage(this.error), buttons: [{ label: localize('learn more', "Learn More"), - run: () => this.openerService.open('https://github.com/pointer-editor/pointer/docs/extension-marketplace#extension-signatures') + run: () => this.openerService.open('https://github.com/PointerIDE/Pointer/docs/extension-marketplace#extension-signatures') }, { label: localize('install donot verify', "Install Anyway (Don't Verify Signature)"), run: () => { @@ -189,7 +189,7 @@ export class PromptExtensionInstallFailureAction extends Action { detail: getErrorMessage(this.error), buttons: [{ label: localize('learn more', "Learn More"), - run: () => this.openerService.open('https://github.com/pointer-editor/pointer/docs/extension-marketplace#extension-signatures') + run: () => this.openerService.open('https://github.com/PointerIDE/Pointer/docs/extension-marketplace#extension-signatures') }, { label: localize('report issue', "Report Issue"), run: () => this.workbenchIssueService.openReporter({ @@ -2934,7 +2934,7 @@ export class ExtensionStatusAction extends ExtensionAction { if (this.extensionManagementServerService.localExtensionManagementServer === this.extension.server) { if (this.extensionManifestPropertiesService.prefersExecuteOnWorkspace(this.extension.local.manifest)) { if (this.extensionManagementServerService.remoteExtensionManagementServer) { - message = new MarkdownString(`${localize('Install in remote server to enable', "This extension is disabled in this workspace because it is defined to run in the Remote Extension Host. Please install the extension in '{0}' to enable.", this.extensionManagementServerService.remoteExtensionManagementServer.label)} [${localize('learn more', "Learn More")}](https://github.com/pointer-editor/pointer/docs/remote-extensions#architecture-and-extension-kinds)`); + message = new MarkdownString(`${localize('Install in remote server to enable', "This extension is disabled in this workspace because it is defined to run in the Remote Extension Host. Please install the extension in '{0}' to enable.", this.extensionManagementServerService.remoteExtensionManagementServer.label)} [${localize('learn more', "Learn More")}](https://github.com/PointerIDE/Pointer/docs/remote-extensions#architecture-and-extension-kinds)`); } } } @@ -2942,15 +2942,15 @@ export class ExtensionStatusAction extends ExtensionAction { else if (this.extensionManagementServerService.remoteExtensionManagementServer === this.extension.server) { if (this.extensionManifestPropertiesService.prefersExecuteOnUI(this.extension.local.manifest)) { if (this.extensionManagementServerService.localExtensionManagementServer) { - message = new MarkdownString(`${localize('Install in local server to enable', "This extension is disabled in this workspace because it is defined to run in the Local Extension Host. Please install the extension locally to enable.", this.extensionManagementServerService.remoteExtensionManagementServer.label)} [${localize('learn more', "Learn More")}](https://github.com/pointer-editor/pointer/docs/remote-extensions#architecture-and-extension-kinds)`); + message = new MarkdownString(`${localize('Install in local server to enable', "This extension is disabled in this workspace because it is defined to run in the Local Extension Host. Please install the extension locally to enable.", this.extensionManagementServerService.remoteExtensionManagementServer.label)} [${localize('learn more', "Learn More")}](https://github.com/PointerIDE/Pointer/docs/remote-extensions#architecture-and-extension-kinds)`); } else if (isWeb) { - message = new MarkdownString(`${localize('Defined to run in desktop', "This extension is disabled because it is defined to run only in {0} for the Desktop.", this.productService.nameLong)} [${localize('learn more', "Learn More")}](https://github.com/pointer-editor/pointer/docs/remote-extensions#architecture-and-extension-kinds)`); + message = new MarkdownString(`${localize('Defined to run in desktop', "This extension is disabled because it is defined to run only in {0} for the Desktop.", this.productService.nameLong)} [${localize('learn more', "Learn More")}](https://github.com/PointerIDE/Pointer/docs/remote-extensions#architecture-and-extension-kinds)`); } } } // Extension on Web Server else if (this.extensionManagementServerService.webExtensionManagementServer === this.extension.server) { - message = new MarkdownString(`${localize('Cannot be enabled', "This extension is disabled because it is not supported in {0} for the Web.", this.productService.nameLong)} [${localize('learn more', "Learn More")}](https://github.com/pointer-editor/pointer/docs/remote-extensions#architecture-and-extension-kinds)`); + message = new MarkdownString(`${localize('Cannot be enabled', "This extension is disabled because it is not supported in {0} for the Web.", this.productService.nameLong)} [${localize('learn more', "Learn More")}](https://github.com/PointerIDE/Pointer/docs/remote-extensions#architecture-and-extension-kinds)`); } if (message) { this.updateStatus({ icon: warningIcon, message }, true); @@ -2990,21 +2990,21 @@ export class ExtensionStatusAction extends ExtensionAction { const runningExtensionServer = runningExtension ? this.extensionManagementServerService.getExtensionManagementServer(toExtension(runningExtension)) : null; if (this.extension.server === this.extensionManagementServerService.localExtensionManagementServer && runningExtensionServer === this.extensionManagementServerService.remoteExtensionManagementServer) { if (this.extensionManifestPropertiesService.prefersExecuteOnWorkspace(this.extension.local.manifest)) { - this.updateStatus({ icon: infoIcon, message: new MarkdownString(`${localize('enabled remotely', "This extension is enabled in the Remote Extension Host because it prefers to run there.")} [${localize('learn more', "Learn More")}](https://github.com/pointer-editor/pointer/docs/remote-extensions#architecture-and-extension-kinds)`) }, true); + this.updateStatus({ icon: infoIcon, message: new MarkdownString(`${localize('enabled remotely', "This extension is enabled in the Remote Extension Host because it prefers to run there.")} [${localize('learn more', "Learn More")}](https://github.com/PointerIDE/Pointer/docs/remote-extensions#architecture-and-extension-kinds)`) }, true); } return; } if (this.extension.server === this.extensionManagementServerService.remoteExtensionManagementServer && runningExtensionServer === this.extensionManagementServerService.localExtensionManagementServer) { if (this.extensionManifestPropertiesService.prefersExecuteOnUI(this.extension.local.manifest)) { - this.updateStatus({ icon: infoIcon, message: new MarkdownString(`${localize('enabled locally', "This extension is enabled in the Local Extension Host because it prefers to run there.")} [${localize('learn more', "Learn More")}](https://github.com/pointer-editor/pointer/docs/remote-extensions#architecture-and-extension-kinds)`) }, true); + this.updateStatus({ icon: infoIcon, message: new MarkdownString(`${localize('enabled locally', "This extension is enabled in the Local Extension Host because it prefers to run there.")} [${localize('learn more', "Learn More")}](https://github.com/PointerIDE/Pointer/docs/remote-extensions#architecture-and-extension-kinds)`) }, true); } return; } if (this.extension.server === this.extensionManagementServerService.remoteExtensionManagementServer && runningExtensionServer === this.extensionManagementServerService.webExtensionManagementServer) { if (this.extensionManifestPropertiesService.canExecuteOnWeb(this.extension.local.manifest)) { - this.updateStatus({ icon: infoIcon, message: new MarkdownString(`${localize('enabled in web worker', "This extension is enabled in the Web Worker Extension Host because it prefers to run there.")} [${localize('learn more', "Learn More")}](https://github.com/pointer-editor/pointer/docs/remote-extensions#architecture-and-extension-kinds)`) }, true); + this.updateStatus({ icon: infoIcon, message: new MarkdownString(`${localize('enabled in web worker', "This extension is enabled in the Web Worker Extension Host because it prefers to run there.")} [${localize('learn more', "Learn More")}](https://github.com/PointerIDE/Pointer/docs/remote-extensions#architecture-and-extension-kinds)`) }, true); } return; } diff --git a/src/vs/workbench/contrib/welcomeGettingStarted/common/gettingStartedContent.ts b/src/vs/workbench/contrib/welcomeGettingStarted/common/gettingStartedContent.ts index 54aed1904d9..dc557f5e953 100644 --- a/src/vs/workbench/contrib/welcomeGettingStarted/common/gettingStartedContent.ts +++ b/src/vs/workbench/contrib/welcomeGettingStarted/common/gettingStartedContent.ts @@ -584,7 +584,7 @@ export const walkthroughs: GettingStartedWalkthroughContent = [ { id: 'workspaceTrust', title: localize('gettingStarted.workspaceTrust.title', "Safely browse and edit code"), - description: localize('gettingStarted.workspaceTrust.description.interpolated', "{0} lets you decide whether your project folders should **allow or restrict** automatic code execution __(required for extensions, debugging, etc)__.\nOpening a file/folder will prompt to grant trust. You can always {1} later.", Button(localize('workspaceTrust', "Workspace Trust"), 'https://github.com/pointer-editor/pointer/docs/workspace-trust'), Button(localize('enableTrust', "enable trust"), 'command:toSide:workbench.trust.manage')), + description: localize('gettingStarted.workspaceTrust.description.interpolated', "{0} lets you decide whether your project folders should **allow or restrict** automatic code execution __(required for extensions, debugging, etc)__.\nOpening a file/folder will prompt to grant trust. You can always {1} later.", Button(localize('workspaceTrust', "Workspace Trust"), 'https://github.com/PointerIDE/Pointer/docs/workspace-trust'), Button(localize('enableTrust', "enable trust"), 'command:toSide:workbench.trust.manage')), when: 'workspacePlatform != \'webworker\' && !isWorkspaceTrusted && workspaceFolderCount == 0', media: { type: 'svg', altText: 'Workspace Trust editor in Restricted mode and a primary button for switching to Trusted mode.', path: 'workspaceTrust.svg' From ad1f5e904c0e2ccb0209ad479f9c3af253979776 Mon Sep 17 00:00:00 2001 From: Samuel Date: Fri, 22 May 2026 16:15:01 +0200 Subject: [PATCH 2/2] Fix Windows release workflow argument splatting --- .github/workflows/windows-release.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/windows-release.yml b/.github/workflows/windows-release.yml index 9240ecfc062..4e896c6b292 100644 --- a/.github/workflows/windows-release.yml +++ b/.github/workflows/windows-release.yml @@ -47,11 +47,11 @@ jobs: - name: Build Pointer shell: pwsh run: | - $args = @('-Arch', '${{ inputs.arch }}') - if ('${{ inputs.zip }}' -eq 'true') { $args += '-Zip' } - if ('${{ inputs.installer }}' -eq 'true') { $args += '-Installer' } - if ('${{ inputs.fresh }}' -eq 'true') { $args += '-Fresh' } - & .\scripts\build-pointer-release.ps1 @args + $buildArgs = @{ Arch = '${{ inputs.arch }}' } + if ('${{ inputs.zip }}' -eq 'true') { $buildArgs['Zip'] = $true } + if ('${{ inputs.installer }}' -eq 'true') { $buildArgs['Installer'] = $true } + if ('${{ inputs.fresh }}' -eq 'true') { $buildArgs['Fresh'] = $true } + & .\scripts\build-pointer-release.ps1 @buildArgs - name: Upload artifacts uses: actions/upload-artifact@v4