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
5 changes: 5 additions & 0 deletions .changeset/align-tool-row-icons.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@pymodel/pythinker-code": patch
---

Align tool-call icons and completion indicators with their labels in web conversations.
5 changes: 5 additions & 0 deletions .changeset/brand-macos-installer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@pymodel/pythinker-desktop": patch
---

Brand the macOS installer with the Pythinker Code drag-to-Applications layout.
5 changes: 5 additions & 0 deletions .changeset/harden-dynamic-workflow-recovery.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@pymodel/pythinker-code": patch
---

Fix Dynamic Workflow subagent selection, recovery, and progress reporting during partial failures.
5 changes: 5 additions & 0 deletions .changeset/stabilize-config-file-reads.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@pymodel/pythinker-code": patch
---

Fix models and providers briefly disappearing when an external editor saves the configuration.
5 changes: 5 additions & 0 deletions .changeset/use-desktop-login-shell-path.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@pymodel/pythinker-code": patch
---

Use the login shell's executable order for tools started by the desktop app.
Binary file added apps/desktop/build/background.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
19 changes: 17 additions & 2 deletions apps/desktop/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@
]
},
"dmg": {
"background": "build/background.png",
"sign": true,
"title": "Pythinker ${version}",
"window": {
Expand All @@ -80,14 +81,28 @@
"contents": [
{
"x": 180,
"y": 200,
"y": 250,
"type": "file"
},
{
"x": 480,
"y": 200,
"y": 250,
"type": "link",
"path": "/Applications"
},
{
"name": ".background.png",
"path": "build/background.png",
"type": "file",
"x": 760,
"y": 520
},
{
"name": ".VolumeIcon.icns",
"path": "dist/.icon-icns/icon.icns",
"type": "file",
"x": 760,
"y": 520
}
]
},
Expand Down
34 changes: 32 additions & 2 deletions apps/desktop/tests/packaging-config.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@ interface DesktopPackage {
readonly afterPack: string
readonly appId: string
readonly dmg: {
readonly background: string
readonly contents: readonly {
readonly name?: string
readonly path?: string
readonly type: string
readonly x: number
Expand Down Expand Up @@ -135,11 +137,39 @@ describe('desktop packaging configuration', () => {
window: { height: 400, width: 660 },
})
expect(desktopPackage.build.dmg.contents).toEqual([
{ x: 180, y: 200, type: 'file' },
{ x: 480, y: 200, type: 'link', path: '/Applications' },
{ x: 180, y: 250, type: 'file' },
{ x: 480, y: 250, type: 'link', path: '/Applications' },
{
name: '.background.png',
path: 'build/background.png',
type: 'file',
x: 760,
y: 520,
},
{
name: '.VolumeIcon.icns',
path: 'dist/.icon-icns/icon.icns',
type: 'file',
x: 760,
y: 520,
},
])
})

it('uses the branded 660x400 macOS DMG background', () => {
const backgroundPath = resolve(desktopRoot, 'build/background.png')

expect(desktopPackage.build.dmg.background).toBe('build/background.png')
expect(existsSync(backgroundPath)).toBe(true)

const background = readFileSync(backgroundPath)
expect(createHash('sha256').update(background).digest('hex'))
.toBe('95e8b785add86919d269b198844d8a903280190f8fd33d5f8ffdca404c113fa8')
expect(background.subarray(0, 8).toString('hex')).toBe('89504e470d0a1a0a')
expect(background.readUInt32BE(16)).toBe(660)
expect(background.readUInt32BE(20)).toBe(400)
})

it('configures the Windows x64 NSIS installer', () => {
expect(desktopPackage.build.win.target).toEqual([{ target: 'nsis', arch: ['x64'] }])
expect(desktopPackage.build.nsis).toEqual({
Expand Down
2 changes: 1 addition & 1 deletion apps/pythinker-code/dist-web/.web-bundle-manifest.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
"sourceHash": "0cff6a0f19b48a2c0372aee63de7a176f5d499a92f2e6d297c5e456376f63283",
"sourceHash": "5e490fdbfda9e6666965a6c99496a2fc8f5e34ed8df8ab61ec9342ea5f19932c",
"sourceFileCount": 411
}

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading