release v1.4.2
This commit is contained in:
@@ -4,12 +4,15 @@ All notable changes to this project will be documented in this file.
|
|||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
|
## [1.4.2] - 2026-01-02
|
||||||
|
|
||||||
- Added timeline dialog (`/timeline` command or Cmd/Ctrl+T) for navigating, reverting, and forking from any point in the conversation (thanks to @aptdnfapt).
|
- Added timeline dialog (`/timeline` command or Cmd/Ctrl+T) for navigating, reverting, and forking from any point in the conversation (thanks to @aptdnfapt).
|
||||||
- Added `/undo` and `/redo` commands for reverting and restoring messages in a session (thanks to @aptdnfapt).
|
- Added `/undo` and `/redo` commands for reverting and restoring messages in a session (thanks to @aptdnfapt).
|
||||||
- Added fork button on user messages to create a new session from any point (thanks to @aptdnfapt).
|
- Added fork button on user messages to create a new session from any point (thanks to @aptdnfapt).
|
||||||
- Desktop app: keyboard shortcuts now use Cmd on macOS and Ctrl on web/other platforms (thanks to @sakhnyuk).
|
- Desktop app: keyboard shortcuts now use Cmd on macOS and Ctrl on web/other platforms (thanks to @sakhnyuk).
|
||||||
- Migrated to OpenCode SDK v2 with improved API types and streaming.
|
- Migrated to OpenCode SDK v2 with improved API types and streaming.
|
||||||
|
|
||||||
|
|
||||||
## [1.4.1] - 2026-01-02
|
## [1.4.1] - 2026-01-02
|
||||||
|
|
||||||
- Added the ability to select the same model multiple times in multi-agent runs for response comparison.
|
- Added the ability to select the same model multiple times in multi-agent runs for response comparison.
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "openchamber-monorepo",
|
"name": "openchamber-monorepo",
|
||||||
"version": "1.4.1",
|
"version": "1.4.2",
|
||||||
"description": "OpenChamber monorepo workspace for web, ui, and desktop runtimes",
|
"description": "OpenChamber monorepo workspace for web, ui, and desktop runtimes",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@openchamber/desktop",
|
"name": "@openchamber/desktop",
|
||||||
"version": "1.4.1",
|
"version": "1.4.2",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"desktopPrerequisites": [
|
"desktopPrerequisites": [
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "openchamber-desktop"
|
name = "openchamber-desktop"
|
||||||
version = "1.4.1"
|
version = "1.4.2"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
publish = false
|
publish = false
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"$schema": "../node_modules/@tauri-apps/cli/schema.json",
|
"$schema": "../node_modules/@tauri-apps/cli/schema.json",
|
||||||
"productName": "OpenChamber",
|
"productName": "OpenChamber",
|
||||||
"version": "1.4.1",
|
"version": "1.4.2",
|
||||||
"identifier": "ai.opencode.openchamber",
|
"identifier": "ai.opencode.openchamber",
|
||||||
"build": {
|
"build": {
|
||||||
"beforeDevCommand": "bun run dev",
|
"beforeDevCommand": "bun run dev",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@openchamber/ui",
|
"name": "@openchamber/ui",
|
||||||
"version": "1.4.1",
|
"version": "1.4.2",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "src/main.tsx",
|
"main": "src/main.tsx",
|
||||||
|
|||||||
@@ -6,11 +6,9 @@ import {
|
|||||||
DialogHeader,
|
DialogHeader,
|
||||||
DialogTitle,
|
DialogTitle,
|
||||||
} from '@/components/ui/dialog';
|
} from '@/components/ui/dialog';
|
||||||
import { Button } from '@/components/ui/button';
|
|
||||||
import { Input } from '@/components/ui/input';
|
import { Input } from '@/components/ui/input';
|
||||||
import { useSessionStore } from '@/stores/useSessionStore';
|
import { useSessionStore } from '@/stores/useSessionStore';
|
||||||
import { useMessageStore } from '@/stores/messageStore';
|
import { useMessageStore } from '@/stores/messageStore';
|
||||||
import { cn } from '@/lib/utils';
|
|
||||||
import { RiLoader4Line, RiSearchLine, RiTimeLine, RiGitBranchLine, RiArrowGoBackLine } from '@remixicon/react';
|
import { RiLoader4Line, RiSearchLine, RiTimeLine, RiGitBranchLine, RiArrowGoBackLine } from '@remixicon/react';
|
||||||
import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip';
|
import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip';
|
||||||
import type { Part } from '@opencode-ai/sdk/v2';
|
import type { Part } from '@opencode-ai/sdk/v2';
|
||||||
@@ -110,7 +108,7 @@ export const TimelineDialog: React.FC<TimelineDialogProps> = ({ open, onOpenChan
|
|||||||
{searchQuery ? 'No messages found' : 'No messages in this session yet'}
|
{searchQuery ? 'No messages found' : 'No messages in this session yet'}
|
||||||
</div>
|
</div>
|
||||||
) : (
|
) : (
|
||||||
filteredMessages.map((message, index) => {
|
filteredMessages.map((message) => {
|
||||||
const preview = getMessagePreview(message.parts);
|
const preview = getMessagePreview(message.parts);
|
||||||
const timestamp = message.info.time.created;
|
const timestamp = message.info.time.created;
|
||||||
const relativeTime = formatRelativeTime(timestamp);
|
const relativeTime = formatRelativeTime(timestamp);
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
"name": "openchamber",
|
"name": "openchamber",
|
||||||
"displayName": "OpenChamber",
|
"displayName": "OpenChamber",
|
||||||
"description": "AI coding assistant powered by OpenCode",
|
"description": "AI coding assistant powered by OpenCode",
|
||||||
"version": "1.4.1",
|
"version": "1.4.2",
|
||||||
"publisher": "fedaykindev",
|
"publisher": "fedaykindev",
|
||||||
"private": true,
|
"private": true,
|
||||||
"repository": {
|
"repository": {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@openchamber/web",
|
"name": "@openchamber/web",
|
||||||
"version": "1.4.1",
|
"version": "1.4.2",
|
||||||
"private": false,
|
"private": false,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "./server/index.js",
|
"main": "./server/index.js",
|
||||||
|
|||||||
Reference in New Issue
Block a user