Skip to content

Commit 7873bac

Browse files
committed
Document prerelease changelog and publish workflow
Clarify that webmux is not yet published, keep release notes under Unreleased, and document first-release steps. Add migration notes for the new ControlButton schema and drawer.buttons config key.
1 parent 0a54773 commit 7873bac

3 files changed

Lines changed: 26 additions & 15 deletions

File tree

‎AGENTS.md‎

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# webmux
22

3-
Mobile-friendly terminal overlay for ttyd + tmux. Published as `webmux` on npm (Bun-only).
3+
Mobile-friendly terminal overlay for ttyd + tmux. Intended for npm as `webmux` (Bun-only).
44

55
## Architecture
66

@@ -49,13 +49,22 @@ bun run build # Build dist/index.html
4949
- CI: `.github/workflows/ci.yml` — bun test + biome check
5050
- Publish: `.github/workflows/publish.yml` — triggered on `v*` tags → npm publish
5151
- `bun link` for local development (CLI available globally, changes immediate)
52+
- First publish workflow:
53+
- Keep release notes under `CHANGELOG.md` → `Unreleased` until first publish
54+
- On release, set `package.json` version, rename `Unreleased` to that version + date
55+
- Create and push matching tag (`v<version>`) to trigger publish workflow
5256

5357
## Conventions
5458

5559
- Button actions use discriminated unions (`type: 'send' | 'ctrl-modifier' | 'paste' | 'drawer-toggle'`)
60+
- Unified control schema: use `ControlButton` for both toolbar and drawer items
61+
- Config shape: `drawer.buttons` (not `drawer.commands`)
5662
- Config via `defineConfig()` — typed, with sensible defaults
5763
- Config resolution: `--config` flag → cwd → `~/.config/webmux/` (XDG fallback)
5864
- Drawer takes a flat `readonly ControlButton[]` — rendered as a single grid
65+
- Help overlay is config-driven and must be fail-safe (never break core controls if help fails)
66+
- Mobile viewport handling: lock document scroll and compute height from visual viewport (keyboard-aware)
67+
- When behaviour/config/API changes, update `CHANGELOG.md` under `Unreleased` in the same change set
5968
- All DOM creation in `util/dom.ts` helpers
6069
- Keyboard state preserved: capture `isKeyboardOpen()` before action, use `conditionalFocus()` after
6170
- Tests use happy-dom for DOM environment

‎CHANGELOG.md‎

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,12 @@
11
# Changelog
22

3-
## 0.1.0
3+
## Unreleased
44

5-
Initial release — extracted from dotfiles into standalone npm package.
5+
This project has not been published yet. On first release, rename this section to `0.1.0` and add the release date.
66

7-
- Two-row touch toolbar with sticky Ctrl modifier
8-
- Context-aware command drawer with tab switching
9-
- Swipe gestures for tmux window navigation
10-
- Pinch-to-zoom font sizing
11-
- Font size +/- controls
12-
- Help overlay
13-
- Scroll buttons for touch devices
14-
- Catppuccin Mocha default theme
15-
- Landscape keyboard detection
16-
- CLI: `build`, `inject`, `init` commands
17-
- XDG config fallback (`~/.config/webmux/`)
18-
- Ships TypeScript source (Bun-only, no transpilation)
7+
- Breaking: unified toolbar/drawer model to `ControlButton` (`id`, `label`, `description`, `action`) and renamed `drawer.commands` to `drawer.buttons`.
8+
- Changed: touch scrolling defaults to wheel semantics for better behaviour across OpenCode, Claude Code, and plain tmux shells.
9+
- Added: dynamic help overlay rendered from current config (no stale hardcoded sections).
10+
- Fixed: help overlay is now fail-safe and cannot block core overlay init.
11+
- Fixed: viewport/keyboard height handling and document scroll lock to reduce white-gap/rubber-band issues on mobile.
12+
- Tests: expanded integration/config/height coverage for the new config model and viewport logic.

‎README.md‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ Turns a ttyd web terminal into a touch-optimised tmux client with toolbar, gestu
2525

2626
## Quick start
2727

28+
If the npm package is not published yet, use local development flow with `bun link` instead of `bun add -g webmux`.
29+
2830
```bash
2931
# 1. Install
3032
bun add -g webmux
@@ -110,6 +112,12 @@ export default defineConfig({
110112

111113
All fields are optional — defaults are filled in via `defineConfig()`.
112114

115+
### Beta migration note
116+
117+
- Drawer config key is `drawer.buttons` (previously `drawer.commands`).
118+
- Toolbar and drawer entries share one schema: `ControlButton` (`id`, `label`, `description`, `action`).
119+
- Help content is generated from configured controls, so keep `description` clear and user-facing.
120+
113121
`gestures.scroll.strategy` controls touch scroll behaviour:
114122

115123
- `wheel` (default): sends SGR mouse wheel events with touch-mapped terminal coordinates.

0 commit comments

Comments
 (0)