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
27 changes: 27 additions & 0 deletions .github/release-notes/v0.0.27.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Anycode v0.0.27

This release expands code review and Git history workflows, adds customizable scrollbars, and improves editor performance, ACP interactions, and layout persistence.

## Code review and Git history

- Added multi-buffer change review with per-file focus, history-aware undo/redo, and diff context that stays within file boundaries.
- Added repository and per-file Git history browsing with pagination, file timelines, historical-file previews, and refresh after external commits.
- Improved Git status handling and added visible feedback after push operations.

## Editor and scrolling

- Added custom scrollbar rendering with Mac, Windows, and minimal presets, configurable width and minimum size, auto-hide behavior, and mobile touch support.
- Persisted scrollbar and settings-panel layout preferences across sessions.
- Improved large-file scrolling, cursor and word-highlight rendering, syntax-injection performance, diff rendering, and plain-file baseline handling.

## ACP and interface

- Improved ACP controls, auto-scroll, agent status, streamed message rendering, code blocks, and session initialization.
- Improved mobile layout and tab visibility, search navigation, and settings presentation.

## Testing and documentation

- Added multibuffer and scrollbar end-to-end coverage, expanded backend Git tests, and improved demo test startup and CI caching.
- Added documentation for multibuffer review and scroll blanking behavior.

**Full comparison:** `v0.0.26...v0.0.27`
17 changes: 17 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,23 @@

All notable changes are documented here by release tag.

## v0.0.27 - 2026-08-12

### Highlights
- Added multi-buffer change review with per-file history, focused navigation, and safer diff context handling.
- Added Git history browsing for repositories and individual files, with pagination and historical-file support.
- Added customizable scrollbars with Mac, Windows, and minimal presets, configurable width/minimum size, and persisted settings.
- Improved editor performance for large files, syntax injection, cursor and word highlighting, scrolling, and diff rendering.
- Improved ACP controls, auto-scroll, agent status and message rendering, mobile layout behavior, and settings/layout persistence.
- Added Git push status feedback, stronger Git status/history handling, expanded backend coverage, and demo/e2e coverage.

### Commits
- `b419fcb` Add multibuffer change review
- `82dbff0` Add Git file history timeline
- `3a77956` feat: custom scrollbar implementation with mac visuals, zero reflow, auto-hide, and mobile touch support
- `1df55a8` Improve ACP controls and auto-scroll behavior
- `991060d` Persist settings panel layout

## v0.0.26 - 2026-08-03

### Highlights
Expand Down
2 changes: 1 addition & 1 deletion anycode-backend/Cargo.lock

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

2 changes: 1 addition & 1 deletion anycode-backend/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "anycode"
version = "0.0.26"
version = "0.0.27"
edition = "2024"

[profile.release]
Expand Down
4 changes: 2 additions & 2 deletions anycode-react/dist/index.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
import AnycodeEditorReact from './Component';
import { AnycodeEditor, Operation } from 'anycode-base';
export { AnycodeEditorReact, AnycodeEditor, Operation };
import { AnycodeEditor, Operation, setWasmBasePath } from 'anycode-base';
export { AnycodeEditorReact, AnycodeEditor, Operation, setWasmBasePath };
1 change: 1 addition & 0 deletions anycode/components/layout/Layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -878,6 +878,7 @@ export const Layout: React.FC<LayoutProps> = ({
saveItem('agentPanelVisible', visibility.agent);
saveItem('terminalPanelVisible', visibility.terminal);
saveItem('browserPanelVisible', visibility.browser);
saveItem('settingsPanelVisible', visibility.settings);
}, [visibility]);

const resolvePanelContent = useCallback((panelId: PanelId, panelKey: string): React.ReactNode => (
Expand Down
22 changes: 22 additions & 0 deletions anycode/tests/demo.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -734,6 +734,28 @@ test.describe('Anycode Live Demo Mode E2E Tests', () => {
).toContainText('-review-sync');
});

test('should persist a Settings panel added from the panel plus button after reload', async ({ page }) => {
const filesPanel = page.getByRole('region', { name: 'Files' });
const addEmptyTabButton = filesPanel.getByRole('button', { name: 'Add Empty Tab' });

await expect(addEmptyTabButton).toBeVisible({ timeout: 10000 });
await expect(page.locator('.layout-dock-panel--settings:visible')).toHaveCount(0);

await filesPanel.locator('.layout-header-actions').hover();
await addEmptyTabButton.click();

const picker = page.locator('.layout-panel-picker').last();
await expect(picker).toBeVisible();
await picker.getByRole('button', { name: 'Settings', exact: true }).click();
await expect(page.locator('.layout-dock-panel--settings:visible')).toBeVisible();

await expect.poll(() => page.evaluate(() => localStorage.getItem('layout'))).toContain('settings');

await page.reload();

await expect(page.locator('.layout-dock-panel--settings:visible')).toBeVisible({ timeout: 10000 });
});

test('should apply scrollbar settings to an open editor and persist them after reload', async ({ page }) => {
const readme = page.getByText('README.md').first();
await expect(readme).toBeVisible({ timeout: 10000 });
Expand Down
Loading