Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
# Changelog

## Unreleased

- Rebalance the ThreadRelink logo so the return arrow has more room and visual
weight.
- Clarify the VS Code extension description and document the Azure free-trial
publishing contingency.

## 0.4.1

- Repair stale automatic conversation links when the current project has
Expand Down
21 changes: 21 additions & 0 deletions docs/MARKETPLACE_PUBLISHING.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,27 @@ Token。
9. 再次运行身份检查,将 `verify_access` 设置为 `true`。检查成功前不要创建
Release。

## Azure Free Trial 到期后的备用方案

Marketplace 发布本身不会消耗 Azure Free Trial 额度,但当前的 user-assigned
managed identity 是 Azure subscription 中的资源。Free Trial 到期后,先手动运行
**Check Marketplace Publishing Identity**,并将 `verify_access` 设置为 `true`:

- 如果检查成功,继续使用当前 identity,不做迁移。
- 如果检查因为 subscription 已禁用而失败,再迁移到不依赖 subscription 的
Microsoft Entra app registration。

迁移时使用现有 GitHub OIDC issuer、不可变 subject 和 audience 创建 app
federated credential,将 GitHub Environment 中的 `AZURE_CLIENT_ID` 改为新
application client ID,并在两个工作流的 `azure/login` 步骤中删除
`subscription-id`、添加 `allow-no-subscriptions: true`。先以
`verify_access: false` 取得新 identity 的 Marketplace profile ID,将其添加为
publisher Contributor,再以 `verify_access: true` 验证访问。

只有新 identity 成功发布一个版本后,才移除旧 Marketplace Contributor,并删除
旧 managed identity 和空 resource group。不要仅因为 Free Trial 即将到期就升级为
按量付费订阅。

## 发布新版本

1. 将 `packages/vscode/package.json` 更新为新的 `X.Y.Z` 版本。
Expand Down
7 changes: 7 additions & 0 deletions packages/vscode/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
# Changelog

## Unreleased

- Rebalance the ThreadRelink logo so the return arrow has more room and visual
weight.
- Describe the extension as keeping Codex conversations connected to their
projects after repository renames or moves.

## 0.4.1

- Repair stale automatic conversation links when the current project has
Expand Down
2 changes: 1 addition & 1 deletion packages/vscode/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "threadrelink",
"displayName": "ThreadRelink",
"description": "A VS Code extension that keeps local Codex conversations discoverable after a repository is renamed or moved.",
"description": "A VS Code extension that keeps local Codex conversations connected to their projects after repositories are renamed or moved.",
"version": "0.4.1",
"icon": "resources/threadrelink.png",
"publisher": "ascendho",
Expand Down
8 changes: 4 additions & 4 deletions packages/vscode/resources/threadrelink-mark.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified packages/vscode/resources/threadrelink.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 3 additions & 3 deletions packages/vscode/resources/threadrelink.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion packages/vscode/test/manifest.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ describe("VS Code extension manifest", () => {
expect(manifest.publisher).toBe("ascendho");
expect(manifest.displayName).toBe("ThreadRelink");
expect(manifest.description).toBe(
"A VS Code extension that keeps local Codex conversations discoverable after a repository is renamed or moved.",
"A VS Code extension that keeps local Codex conversations connected to their projects after repositories are renamed or moved.",
);
expect(manifest.version).toMatch(/^\d+\.\d+\.\d+$/);
expect(manifest.pricing).toBe("Free");
Expand Down