* Add `cmux omo` command for OpenCode + oh-my-openagent integration Same pattern as `cmux claude-teams`: creates a tmux shim so oh-my-openagent's TmuxSessionManager spawns agents as native cmux splits instead of tmux panes. Sets TMUX/TMUX_PANE env vars, prepends shim to PATH, and execs into opencode. Closes https://github.com/manaflow-ai/cmux/issues/2085 * Auto-install oh-my-opencode plugin when running cmux omo Before launching opencode, cmux omo now: - Checks if oh-my-opencode is registered in ~/.config/opencode/opencode.json - If not, creates/updates the config with the plugin entry - Checks if the npm package is installed in node_modules - If not, runs bun add (or npm install) to install it - Then proceeds with tmux shim setup and exec * Use shadow config dir to avoid modifying user's opencode setup Instead of writing directly to ~/.config/opencode/opencode.json, cmux omo now creates a shadow config at ~/.cmuxterm/omo-config/ that layers oh-my-opencode on top of the user's existing config. Symlinks node_modules, package.json, bun.lock, and plugin config from the original dir. Sets OPENCODE_CONFIG_DIR to the shadow directory. Running plain `opencode` remains unaffected. * Add Agent Integrations docs section with Claude Code Teams and oh-my-opencode pages Adds sectioned sidebar navigation to the docs site. The new Agent Integrations section contains separate pages for cmux claude-teams and cmux omo, documenting usage, tmux shim mechanics, directory layout, environment variables, and the shadow config approach. Both pages include a nightly-only warning. Full English and Japanese translations, nav item keys added to all 19 locales. * Remove uppercase from sidebar section headers * Add more spacing above and below sidebar section headers * Enable tmux mode in oh-my-opencode config, improve docs - cmux omo now writes tmux.enabled=true to the shadow oh-my-opencode.json config. Without this, oh-my-openagent's TmuxSessionManager won't spawn visual panes even though $TMUX is set (the config defaults to false). - Nightly warnings now link to /nightly instead of generic text. - Added "What you get" section to oh-my-opencode docs explaining the visual pane behavior (auto-layout, idle cleanup, queueing). - Added tmux.enabled step to first-run and how-it-works sections. * Add terminal-notifier shim to route oh-my-openagent notifications to cmux oh-my-openagent sends macOS notifications via terminal-notifier (args: -title <t> -message <m> [-activate <id>]). The shim in ~/.cmuxterm/omo-bin/terminal-notifier intercepts these calls and routes them through cmux notify, so notifications appear in cmux's sidebar panel instead of as raw macOS notifications. * Add pane geometry to tmux-compat for oh-my-openagent grid planning oh-my-openagent's TmuxSessionManager needs pane geometry (columns, rows, position, window dimensions) to decide where to spawn agent panes. Without this data, agents run headlessly. Server side: - pane.list v2 response now includes pixel_frame, cell_size, columns, rows per pane, plus container_frame at the top level - Uses BonsplitController.layoutSnapshot() for pixel geometry and ghostty_surface_size() for terminal grid dimensions CLI side: - tmuxEnrichContextWithGeometry() computes character-cell positions from pixel frames and cell dimensions for tmux format variables (pane_width, pane_height, pane_left, pane_top, pane_active, window_width, window_height) - list-panes now resolves pane targets (%uuid) via tmuxResolvePaneTarget instead of failing with "Workspace not found" - display-message enriched with geometry for format strings like #{pane_width},#{window_width} - tmux -V now returns "tmux 3.4" (needed by oh-my-openagent's tmux-path-resolver verification) * Add socket tests for tmux-compat pane geometry 6 tests verifying the geometry enrichment works end-to-end: - pane.list returns pixel_frame, columns, rows, cell_size, container_frame - tmux -V returns version string - list-panes -F renders geometry format variables as integers - list-panes -t %<uuid> resolves pane targets - display -p renders pane_width and window_width - After split, two panes have different positions and halved widths All 6 pass on macmini (cmux-macmini). * Handle tmux -V in shim script directly (no socket needed) oh-my-openagent's tmux-path-resolver runs tmux -V to verify the binary works. The __tmux-compat handler requires a socket connection, which may not be established at verification time. Handle -V in the bash shim directly to avoid the socket dependency. * Lower default tmux pane min widths for cmux omo oh-my-openagent defaults: main_pane_min_width=120, agent_pane_min_width=40, requiring 161+ columns. Most terminal windows are narrower, causing decideSpawnActions to return canSpawn=false and defer agents forever. cmux omo now sets: main_pane_min_width=60, agent_pane_min_width=30, main_pane_size=50, requiring only 91 columns. Also moved tmux -V handling into the bash shim to avoid needing a socket connection for the version check. * Resolve merge conflicts with main (main-vertical layout, focus param) - Keep upstream main-vertical layout anchoring from #2119 - Keep upstream focus param (v2Bool) instead of no_focus - Combine with our -d flag handling: -d sets focus=false - Include customCommands nav item from main * Implement select-layout equalize and resize-pane absolute width When oh-my-openagent spawns agent panes, it calls select-layout main-vertical after each split to redistribute panes evenly, then resize-pane -x <columns> to set the main pane width. Both were previously no-ops, causing cascading uneven splits. Server side: - Add workspace.equalize_splits v2 API that calls the existing TabManager.equalizeSplits (sets all dividers to 0.5) CLI side: - select-layout now calls workspace.equalize_splits before tracking main-vertical state - resize-pane -x <columns> without directional flags now computes the pixel delta from current to desired width and resizes accordingly * Fix equalize to use proportional divider positions The previous equalize set all dividers to 0.5, which in a right- recursive binary tree (from successive splits) gives 50/25/12.5/6.25% instead of equal sizes. New algorithm counts leaf panes on each side of each split and sets the divider to N_left / (N_left + N_right). For 5 panes in a chain: 1/5, 1/4, 1/3, 1/2, giving each pane exactly 20%. * Fix select-layout main-vertical to only equalize vertical splits The proportional equalize was treating the top-level horizontal split (main vs agent column) the same as vertical splits, setting the main pane to 1/6 of the window with 5 agents. For main-vertical layout, only equalize vertical splits (the agent column), leaving the horizontal main/agent divider untouched. The subsequent resize-pane -x handles the main pane width. workspace.equalize_splits now accepts an optional orientation filter ("vertical" or "horizontal") to scope which splits get equalized. * Re-equalize agent column after kill-pane * Address PR review comments - Fix cmux omo --help: remove omo from the help-bypass guard so --help shows usage text instead of trying to launch opencode - Don't overwrite unreadable opencode.json: fail with an error instead of silently resetting to empty config - Drain installer pipes concurrently before waitUntilExit to prevent deadlock from full pipe buffers during bun/npm install --------- Co-authored-by: Lawrence Chen <lawrencecchen@users.noreply.github.com>
670 lines
82 KiB
JSON
670 lines
82 KiB
JSON
{
|
||
"meta": {
|
||
"title": "cmux — ស្ថានីយដែលបង្កើតសម្រាប់ពហុកិច្ចការ",
|
||
"description": "ស្ថានីយ macOS ដើមកំណើតបង្កើតលើ Ghostty។ ដំណើរការជាមួយ Claude Code, Codex, OpenCode, Gemini CLI, Kiro, Aider និងឧបករណ៍ CLI ណាមួយ។",
|
||
"ogDescription": "ស្ថានីយ macOS ដើមកំណើតសម្រាប់ភ្នាក់ងារសរសេរកូដ AI។"
|
||
},
|
||
"common": {
|
||
"downloadForMac": "ទាញយកសម្រាប់ Mac",
|
||
"viewOnGitHub": "មើលនៅលើ GitHub",
|
||
"closeMenu": "បិទម៉ឺនុយ",
|
||
"openMenu": "បើកម៉ឺនុយ",
|
||
"toggleTheme": "ប្ដូរស្បែក",
|
||
"backToBlog": "ត្រឡប់ទៅប្លក់",
|
||
"readTheDocs": "អានឯកសារ",
|
||
"viewChangelog": "មើលកំណត់ត្រាផ្លាស់ប្ដូរ"
|
||
},
|
||
"nav": {
|
||
"docs": "ឯកសារ",
|
||
"blog": "ប្លក់",
|
||
"changelog": "កំណត់ត្រាផ្លាស់ប្ដូរ",
|
||
"community": "សហគមន៍",
|
||
"github": "GitHub"
|
||
},
|
||
"footer": {
|
||
"product": "ផលិតផល",
|
||
"resources": "ធនធាន",
|
||
"legal": "ផ្នែកច្បាប់",
|
||
"social": "បណ្ដាញសង្គម",
|
||
"blog": "ប្លក់",
|
||
"community": "សហគមន៍",
|
||
"docs": "ឯកសារ",
|
||
"changelog": "កំណត់ត្រាផ្លាស់ប្ដូរ",
|
||
"privacy": "ឯកជនភាព",
|
||
"terms": "លក្ខខណ្ឌ",
|
||
"eula": "EULA",
|
||
"github": "GitHub",
|
||
"twitter": "X / Twitter",
|
||
"discord": "Discord",
|
||
"contact": "ទំនាក់ទំនង",
|
||
"nightly": "Nightly",
|
||
"copyright": "© {year} Manaflow",
|
||
"language": "ភាសា"
|
||
},
|
||
"home": {
|
||
"taglinePrefix": "ទែមីណលដែលបង្កើតសម្រាប់ ",
|
||
"typingCodingAgents": "ភ្នាក់ងារសរសេរកូដ",
|
||
"typingMultitasking": "ពហុកិច្ចការ",
|
||
"subtitle": "កម្មវិធី macOS ដើមដែលបង្កើតលើ Ghostty។ ផ្ទាំងបញ្ឈរ, រង្វង់ជូនដំណឹងពេល agent ត្រូវការការយកចិត្តទុកដាក់, បន្ទះបំបែក, និង socket API សម្រាប់ស្វ័យប្រវត្តិកម្ម។",
|
||
"features": "មុខងារ",
|
||
"faq": "សំណួរញឹកញាប់",
|
||
"communitySection": "សហគមន៍",
|
||
"feature": {
|
||
"verticalTabs": "ផ្ទាំងបញ្ឈរ",
|
||
"verticalTabsDesc": ": របារចំហៀងបង្ហាញ git branch, ថតការងារ, ports, និងអត្ថបទជូនដំណឹង",
|
||
"notificationRings": "រង្វង់ជូនដំណឹង",
|
||
"notificationRingsDesc": ": បន្ទះភ្លឺឡើងពេល agent ត្រូវការការយកចិត្តទុកដាក់",
|
||
"inAppBrowser": "កម្មវិធីរុករកក្នុងកម្មវិធី",
|
||
"inAppBrowserDesc": ": បំបែកកម្មវិធីរុករកនៅជាប់ទែមីណលរបស់អ្នកជាមួយ API ដែលអាចសរសេរស្គ្រីបបាន",
|
||
"splitPanes": "បន្ទះបំបែក",
|
||
"splitPanesDesc": ": បំបែកផ្ដេកនិងបញ្ឈរក្នុងផ្ទាំងនីមួយៗ",
|
||
"scriptable": "អាចសរសេរស្គ្រីបបាន",
|
||
"scriptableDesc": ": CLI និង socket API សម្រាប់ស្វ័យប្រវត្តិកម្មនិងស្គ្រីប",
|
||
"gpuAccelerated": "បង្កើនល្បឿនដោយ GPU",
|
||
"gpuAcceleratedDesc": ": ដំណើរការដោយ libghostty សម្រាប់ការបង្ហាញរលូន",
|
||
"lightweight": "ស្រាល",
|
||
"lightweightDesc": ": Swift + AppKit ដើម, គ្មាន Electron",
|
||
"keyboardShortcuts": "ផ្លូវកាត់ក្ដារចុច",
|
||
"keyboardShortcutsDesc": ": <link>ផ្លូវកាត់ជាច្រើន</link> សម្រាប់ workspace, បំបែក, កម្មវិធីរុករក, និងច្រើនទៀត"
|
||
},
|
||
"faqGhosttyQ": "cmux ទាក់ទងនឹង Ghostty យ៉ាងដូចម្ដេច?",
|
||
"faqGhosttyA": "cmux មិនមែនជា fork នៃ Ghostty ទេ។ វាប្រើ <link>libghostty</link> ជាបណ្ណាល័យសម្រាប់ការបង្ហាញទែមីណល, ដូចគ្នានឹងកម្មវិធីប្រើ WebKit សម្រាប់ web views ដែរ។ Ghostty គឺជាទែមីណលឯករាជ្យ; cmux គឺជាកម្មវិធីផ្សេងដែលបង្កើតនៅលើម៉ាស៊ីនបង្ហាញរបស់វា។",
|
||
"faqPlatformQ": "វាគាំទ្រប្រព័ន្ធប្រតិបត្តិការអ្វីខ្លះ?",
|
||
"faqPlatformA": "macOS តែប៉ុណ្ណោះសម្រាប់ពេលនេះ។ cmux គឺជាកម្មវិធី Swift + AppKit ដើម។",
|
||
"faqAgentsQ": "cmux ដំណើរការជាមួយ coding agent អ្វីខ្លះ?",
|
||
"faqAgentsA": "ទាំងអស់។ cmux គឺជាទែមីណល, ដូច្នេះ agent ណាមួយដែលដំណើរការក្នុងទែមីណលអាចប្រើបានភ្លាមៗ: Claude Code, Codex, OpenCode, Gemini CLI, Kiro, Aider, Goose, Amp, Cline, Cursor Agent, និងអ្វីផ្សេងទៀតដែលអ្នកអាចចាប់ផ្ដើមពីបន្ទាត់ពាក្យបញ្ជា។",
|
||
"faqNotificationsQ": "ការជូនដំណឹងដំណើរការយ៉ាងដូចម្ដេច?",
|
||
"faqNotificationsA": "នៅពេលដំណើរការមួយត្រូវការការយកចិត្តទុកដាក់, cmux បង្ហាញរង្វង់ជូនដំណឹងជុំវិញបន្ទះ, ស្លាកមិនទាន់អានក្នុងរបារចំហៀង, ផ្ទាំងលេចជូនដំណឹង, និងការជូនដំណឹងផ្ទៃតុ macOS។ ទាំងនេះដំណើរការដោយស្វ័យប្រវត្តិតាមរយៈ terminal escape sequences ស្តង់ដារ (OSC 9/99/777), ឬអ្នកអាចកេះវាដោយ <cliLink>cmux CLI</cliLink> និង <hooksLink>Claude Code hooks</hooksLink>។",
|
||
"faqShortcutsQ": "តើខ្ញុំអាចប្ដូរផ្លូវកាត់ក្ដារចុចតាមបំណងបានទេ?",
|
||
"faqShortcutsA": "ការចងក្ដារចុចទែមីណលត្រូវបានអានពីឯកសារកំណត់រចនាសម្ព័ន្ធ Ghostty របស់អ្នក (<configPath>~/.config/ghostty/config</configPath>)។ ផ្លូវកាត់ជាក់លាក់របស់ cmux (workspace, បំបែក, កម្មវិធីរុករក, ជូនដំណឹង) អាចប្ដូរតាមបំណងក្នុងការកំណត់។ មើល <link>ផ្លូវកាត់លំនាំដើម</link> សម្រាប់បញ្ជីពេញ។",
|
||
"faqTmuxQ": "វាប្រៀបធៀបជាមួយ tmux យ៉ាងដូចម្ដេច?",
|
||
"faqTmuxA": "tmux គឺជា terminal multiplexer ដែលដំណើរការក្នុងទែមីណលណាមួយ។ cmux គឺជាកម្មវិធី macOS ដើមជាមួយ GUI: ផ្ទាំងបញ្ឈរ, បន្ទះបំបែក, កម្មវិធីរុករកដែលបង្កប់, និង socket API ទាំងអស់មានស្រាប់។ មិនត្រូវការឯកសារកំណត់រចនាសម្ព័ន្ធ ឬគ្រាប់ចុចបុព្វបទទេ។",
|
||
"faqFreeQ": "តើ cmux ឥតគិតថ្លៃទេ?",
|
||
"faqFreeA": "បាទ/ចាស, cmux ឥតគិតថ្លៃក្នុងការប្រើប្រាស់។ កូដប្រភពមាននៅលើ <link>GitHub</link>។"
|
||
},
|
||
"community": {
|
||
"title": "សហគមន៍",
|
||
"description": "ភ្ជាប់ជាមួយអ្នកប្រើ cmux ផ្សេងទៀតនិងក្រុមដែលនៅពីក្រោយវា។",
|
||
"discord": "Discord",
|
||
"discordAction": "ចូលរួម Discord របស់យើង",
|
||
"discordDesc": "ជជែកជាមួយសហគមន៍, ទទួលបានជំនួយ, និងចែករំលែកមតិកែលម្អ",
|
||
"githubAction": "មើលនៅលើ GitHub",
|
||
"githubDesc": "ដាក់ផ្កាយ repo, រាយការណ៍បញ្ហា, និងចូលរួមវិភាគទាន",
|
||
"twitter": "Twitter",
|
||
"twitterAction": "តាមដាននៅលើ X",
|
||
"twitterDesc": "ព័ត៌មានថ្មី, សេចក្ដីប្រកាស, និងគន្លឹះ",
|
||
"youtube": "YouTube",
|
||
"youtubeAction": "ជាវ",
|
||
"youtubeDesc": "ការបង្ហាញ, មេរៀន, និងការណែនាំ",
|
||
"linkedin": "LinkedIn",
|
||
"linkedinAction": "តាមដានយើង",
|
||
"linkedinDesc": "ព័ត៌មានក្រុមហ៊ុននិងព័ត៌មានថ្មីផ្នែកវិស្វកម្ម",
|
||
"metaTitle": "សហគមន៍ — cmux",
|
||
"metaDescription": "ចូលរួមសហគមន៍ cmux នៅលើ Discord, Twitter, GitHub និងច្រើនទៀត"
|
||
},
|
||
"blog": {
|
||
"title": "ប្លក់",
|
||
"layoutTitle": "cmux blog",
|
||
"metaTitle": "ប្លក់",
|
||
"metaDescription": "ព័ត៌មាននិងបច្ចុប្បន្នភាពពីក្រុម cmux",
|
||
"description": "ព័ត៌មាននិងព័ត៌មានថ្មីពីក្រុម cmux",
|
||
"posts": {
|
||
"cmdShiftU": {
|
||
"title": "Cmd+Shift+U",
|
||
"summary": "របៀបដែល Cmd+Shift+U រុករករវាង agent ដែលបានបញ្ចប់ក្នុង workspace ផ្សេងៗក្នុង cmux។",
|
||
"date": "ថ្ងៃទី 4 ខែមីនា ឆ្នាំ 2026",
|
||
"p1": "មុខងារ cmux ដែលខ្ញុំចូលចិត្តបំផុតគឺ Cmd+Shift+U។ ខ្ញុំមាន workspace 17 បើកនៅពេលនេះ, នីមួយៗកំពុងដំណើរការ agent មួយ។ ខ្ញុំធ្លាប់ចុចតាមផ្ទាំងនិងផ្ទាំងជូនដំណឹងដើម្បីរកមើលអ្វីដែលបានបញ្ចប់។ ការវាយអក្សរលឿនជាង។",
|
||
"p2": "Cmd+Shift+U លោតទៅ <link>ជូនដំណឹង</link> មិនទាន់អានថ្មីបំផុត។ ក្នុងការអនុវត្តន៍វាមានន័យថា agent ចុងក្រោយដែលបានបញ្ចប់។ វាប្ដូរទៅ workspace ត្រឹមត្រូវ, ផ្ដោតលើបន្ទះពិតប្រាកដ, ភ្លឺវាឡើងដើម្បីអ្នកមើលឃើញកន្លែងដែលត្រូវមើល, និងសម្គាល់ថាបានអាន។ ប្រសិនបើជូនដំណឹងមកពីបង្អួចផ្សេង, បង្អួចនោះមកមុខ។"
|
||
},
|
||
"zenOfCmux": {
|
||
"title": "ទស្សនវិជ្ជា cmux",
|
||
"summary": "cmux គឺជាប្រដាប់មូលដ្ឋាន មិនមែនជាដំណោះស្រាយទេ។ វាផ្ដល់ឱ្យអ្នកនូវផ្នែកដែលអាចផ្សំបាន ហើយលំហូរការងាររបស់អ្នកអាស្រ័យលើអ្នក។",
|
||
"date": "ថ្ងៃទី 27 ខែកុម្ភៈ ឆ្នាំ 2026",
|
||
"p1": "cmux មិនកំណត់វិធីដែលអ្នកអភិវឌ្ឍន៍ប្រើឧបករណ៍របស់ពួកគេទេ។ វាជាទែមីណលនិងកម្មវិធីរុករកជាមួយ CLI ហើយផ្នែកដែលនៅសល់អាស្រ័យលើអ្នក។",
|
||
"p2": "cmux គឺជាប្រដាប់មូលដ្ឋាន មិនមែនជាដំណោះស្រាយទេ។ វាផ្ដល់ឱ្យអ្នកនូវទែមីណល, កម្មវិធីរុករក, ជូនដំណឹង, workspace, បំបែក, ផ្ទាំង, និង CLI ដើម្បីគ្រប់គ្រងទាំងអស់។ cmux មិនបង្ខំអ្នកឱ្យប្រើ coding agent តាមវិធីជាក់លាក់មួយទេ។ អ្វីដែលអ្នកបង្កើតជាមួយប្រដាប់មូលដ្ឋានទាំងនេះគឺជារបស់អ្នក។",
|
||
"p3": "អ្នកអភិវឌ្ឍន៍ល្អបំផុតតែងតែបង្កើតឧបករណ៍ផ្ទាល់ខ្លួន។ គ្មាននរណាបានរកឃើញវិធីល្អបំផុតក្នុងការធ្វើការជាមួយ agent នៅឡើយទេ ហើយក្រុមដែលបង្កើតផលិតផលបិទក៏មិនបានដែរ។ អ្នកអភិវឌ្ឍន៍ដែលជិតបំផុតទៅនឹង codebase ផ្ទាល់ខ្លួនរបស់ពួកគេនឹងរកឃើញវាមុនគេ។",
|
||
"p4": "ផ្ដល់ឱ្យអ្នកអភិវឌ្ឍន៍មួយលាននាក់នូវប្រដាប់មូលដ្ឋានដែលអាចផ្សំបាន ហើយពួកគេនឹងរកឃើញលំហូរការងារដែលមានប្រសិទ្ធភាពបំផុតរួមគ្នា លឿនជាងក្រុមផលិតផលណាមួយអាចរចនាពីលើចុះក្រោម។"
|
||
},
|
||
"showHnLaunch": {
|
||
"title": "បើកដំណើរការ cmux នៅលើ Show HN",
|
||
"summary": "cmux ឡើងដល់ #2 នៅលើ Hacker News, ត្រូវបានចែករំលែកដោយ Mitchell Hashimoto, និងប្រជាប្រិយនៅជប៉ុន។",
|
||
"date": "ថ្ងៃទី 21 ខែកុម្ភៈ ឆ្នាំ 2026",
|
||
"intro": "យើងបានបង្ហោះ cmux នៅលើ <link>Show HN</link> នៅថ្ងៃទី 19 កុម្ភៈ:",
|
||
"blockquote1": "ខ្ញុំដំណើរការ Claude Code និង Codex sessions ជាច្រើនស្របគ្នា។ ខ្ញុំកំពុងប្រើ Ghostty ជាមួយបន្ទះបំបែកជាច្រើន ហើយពឹងផ្អែកលើការជូនដំណឹង macOS ដើមដើម្បីដឹងពេល agent ត្រូវការខ្ញុំ។ ប៉ុន្តែមាតិកាជូនដំណឹង Claude Code តែងតែជា \"Claude is waiting for your input\" ដោយគ្មានបរិបទ ហើយនៅពេលបើកផ្ទាំងគ្រប់គ្រាន់ ខ្ញុំមិនអាចអានចំណងជើងបានទៀតទេ។",
|
||
"blockquote2": "ខ្ញុំបានសាកល្បង coding orchestrator មួយចំនួន ប៉ុន្តែភាគច្រើនជាកម្មវិធី Electron/Tauri ហើយប្រតិបត្តិការរំខានខ្ញុំ។ ខ្ញុំក៏ចូលចិត្តទែមីណលដែរ ព្រោះ GUI orchestrator ចាប់អ្នកក្នុងលំហូរការងាររបស់ពួកគេ។ ដូច្នេះខ្ញុំបានបង្កើត cmux ជាកម្មវិធី macOS ដើមក្នុង Swift/AppKit។ វាប្រើ libghostty សម្រាប់បង្ហាញទែមីណល ហើយអានកំណត់រចនាសម្ព័ន្ធ Ghostty ដែលមានស្រាប់របស់អ្នកសម្រាប់ស្បែក, ពុម្ពអក្សរ, ពណ៌, និងច្រើនទៀត។",
|
||
"blockquote3": "ការបន្ថែមសំខាន់គឺរបារចំហៀងនិងប្រព័ន្ធជូនដំណឹង។ របារចំហៀងមានផ្ទាំងបញ្ឈរដែលបង្ហាញ git branch, ថតការងារ, ports ដែលកំពុងស្ដាប់, និងអត្ថបទជូនដំណឹងថ្មីបំផុតសម្រាប់ workspace នីមួយៗ។ ប្រព័ន្ធជូនដំណឹងចាប់យក terminal sequences (OSC 9/99/777) ហើយមាន CLI (cmux notify) ដែលអ្នកអាចភ្ជាប់ទៅ agent hooks សម្រាប់ Claude Code, OpenCode ជាដើម។ នៅពេល agent កំពុងរង់ចាំ បន្ទះរបស់វាទទួលរង្វង់ខៀវ ហើយផ្ទាំងភ្លឺឡើងក្នុងរបារចំហៀង ដូច្នេះខ្ញុំអាចដឹងថាមួយណាត្រូវការខ្ញុំក្នុងការបំបែកនិងផ្ទាំង។ Cmd+Shift+U លោតទៅមិនទាន់អានថ្មីបំផុត។",
|
||
"blockquote4": "កម្មវិធីរុករកក្នុងកម្មវិធីមាន API ដែលអាចសរសេរស្គ្រីបបាន។ Agent អាចថតរូបមែកធាង accessibility, ទទួល element refs, ចុច, បំពេញទម្រង់, វាយតម្លៃ JS, និងអានកំណត់ត្រា console។ អ្នកអាចបំបែកបន្ទះកម្មវិធីរុករកនៅជាប់ទែមីណលរបស់អ្នក ហើយឱ្យ Claude Code ធ្វើអន្តរកម្មជាមួយ dev server របស់អ្នកដោយផ្ទាល់។",
|
||
"blockquote5": "អ្វីទាំងអស់អាចសរសេរស្គ្រីបបានតាមរយៈ CLI និង socket API: បង្កើត workspace/ផ្ទាំង, បំបែកបន្ទះ, ផ្ញើការចុចគ្រាប់ចុច, បើក URL ក្នុងកម្មវិធីរុករក។",
|
||
"hitNumber2": "នៅពេលកំពូលវាឡើងដល់ #2 នៅលើ Hacker News។ Mitchell Hashimoto បានចែករំលែកវា:",
|
||
"favoriteComment": "មតិដែលខ្ញុំចូលចិត្តបំផុតពី <link>ខ្សែរឹត HN</link>:",
|
||
"viralJapan": "ដោយភ្ញាក់ផ្អើល, cmux បានប្រជាប្រិយនៅជប៉ុន:",
|
||
"translation": "ការបកប្រែ: \"នេះមើលទៅល្អ។ កម្មវិធីទែមីណលផ្អែកលើ Ghostty ដែលរចនាឡើងដើម្បីអ្នកមិនវង្វេងនៅពេលដំណើរការ CLI ជាច្រើនដូចជា Claude Code ស្របគ្នា។ បន្ទះដែលរង់ចាំការបញ្ចូលទទួលស៊ុមខៀវ ហើយវាមានប្រព័ន្ធជូនដំណឹងផ្ទាល់ខ្លួន។\"",
|
||
"viralChina": "និងពាក់កណ្ដាលប្រជាប្រិយនៅចិន:",
|
||
"extensions": "រឿងគួរឱ្យរំភើបមួយទៀតគឺឃើញមនុស្សបង្កើតនៅលើ cmux CLI។ sasha បានបង្កើត pi-cmux extension ដែលបង្ហាញព័ត៌មាន model, ការប្រើប្រាស់ token, និងស្ថានភាព agent ក្នុងរបារចំហៀង:",
|
||
"scriptable": "អ្វីទាំងអស់ក្នុង cmux អាចសរសេរស្គ្រីបបានតាមរយៈ CLI: បង្កើត workspace, ផ្ញើការចុចគ្រាប់ចុច, គ្រប់គ្រងកម្មវិធីរុករក, អានជូនដំណឹង។ ផ្នែកមួយនៃទស្សនវិជ្ជា cmux គឺអាចសរសេរកម្មវិធីនិងផ្សំបាន ដើម្បីមនុស្សអាចប្ដូរវិធីធ្វើការជាមួយ coding agent តាមបំណង។ បច្ចេកវិទ្យាទំនើបបំផុតសម្រាប់ coding agent កំពុងផ្លាស់ប្ដូរយ៉ាងលឿន ហើយអ្នកមិនចង់ជាប់នៅក្នុង GUI orchestrator ដែលមិនអាចតាមទានទេ។",
|
||
"cta": "ប្រសិនបើអ្នកកំពុងដំណើរការ coding agent ជាច្រើន, <link>សាកល្បង cmux</link>។"
|
||
},
|
||
"introducingCmux": {
|
||
"title": "ណែនាំ cmux",
|
||
"summary": "ទែមីណល macOS ដើមដែលបង្កើតនៅលើ Ghostty, រចនាសម្រាប់ដំណើរការ AI coding agent ជាច្រើនជាប់គ្នា។",
|
||
"date": "ថ្ងៃទី 12 ខែកុម្ភៈ ឆ្នាំ 2026",
|
||
"p1": "cmux គឺជាកម្មវិធីទែមីណល macOS ដើមដែលបង្កើតនៅលើ Ghostty, រចនាពីមូលដ្ឋានសម្រាប់អ្នកអភិវឌ្ឍន៍ដែលដំណើរការ AI coding agent ជាច្រើនក្នុងពេលតែមួយ។",
|
||
"whyTitle": "ហេតុអ្វី cmux?",
|
||
"whyP": "លំហូរការងារអភិវឌ្ឍន៍ទំនើបជារឿយៗពាក់ព័ន្ធនឹងការដំណើរការ agent ជាច្រើនក្នុងពេលតែមួយ។ Claude Code, Codex, និងឧបករណ៍ផ្សេងទៀតនីមួយៗក្នុងទែមីណលផ្ទាល់ខ្លួន។ ការតាមដានថាមួយណាត្រូវការការយកចិត្តទុកដាក់ និងប្ដូររវាងពួកវាយ៉ាងលឿន គឺជាបញ្ហាដែល cmux ដោះស្រាយ។",
|
||
"featuresTitle": "មុខងារសំខាន់ៗ",
|
||
"getStartedTitle": "ចាប់ផ្ដើម",
|
||
"getStartedP": "ដំឡើង cmux តាមរយៈ Homebrew ឬទាញយក DMG ពី <link>មគ្គុទ្ទេសក៍ចាប់ផ្ដើម</link>។",
|
||
"featureVerticalTabsLabel": "ផ្ទាំងបញ្ឈរ",
|
||
"featureVerticalTabsDesc": "មើលទែមីណលទាំងអស់ក្នុងមួយភ្លែតក្នុងរបារចំហៀង",
|
||
"featureNotificationsLabel": "រង្វង់ជូនដំណឹង",
|
||
"featureNotificationsDesc": "ផ្ទាំងភ្លឺនៅពេល agent ត្រូវការការបញ្ចូលរបស់អ្នក",
|
||
"featureSplitPanesLabel": "បន្ទះបំបែក",
|
||
"featureSplitPanesDesc": "បំបែកផ្ដេកនិងបញ្ឈរក្នុង workspace នីមួយៗ",
|
||
"featureSocketApiLabel": "Socket API",
|
||
"featureSocketApiDesc": "ការគ្រប់គ្រងដោយកម្មវិធីសម្រាប់បង្កើតផ្ទាំងនិងផ្ញើការបញ្ចូល",
|
||
"featureGpuLabel": "បង្កើនល្បឿនដោយ GPU",
|
||
"featureGpuDesc": "ដំណើរការដោយ libghostty សម្រាប់ការបង្ហាញរលូន"
|
||
}
|
||
},
|
||
"zenOfCmux": {
|
||
"metaTitle": "ហ្សែនរបស់ cmux",
|
||
"metaDescription": "cmux គឺជាបុព្វបទ មិនមែនដំណោះស្រាយទេ។"
|
||
},
|
||
"cmdShiftU": {
|
||
"metaTitle": "Cmd+Shift+U",
|
||
"metaDescription": "ផ្លូវកាត់ក្តារចុចថ្មីដែលផ្លាស់ប្ដូរវិធីអន្តរកម្មរបស់អ្នកជាមួយ cmux។"
|
||
},
|
||
"showHnLaunch": {
|
||
"metaTitle": "ចាប់ផ្តើម cmux នៅ Show HN",
|
||
"metaDescription": "រឿងរ៉ាវនៃការចាប់ផ្តើម cmux នៅ Hacker News។"
|
||
},
|
||
"introducingCmux": {
|
||
"metaTitle": "ណែនាំ cmux",
|
||
"metaDescription": "ហេតុអ្វីយើងបង្កើត cmux ស្ថានីយថ្មីសម្រាប់ macOS។"
|
||
}
|
||
},
|
||
"docs": {
|
||
"layoutTitle": "cmux docs",
|
||
"gettingStarted": {
|
||
"title": "ចាប់ផ្ដើម",
|
||
"metaDescription": "ដំឡើង cmux, ទែមីណល macOS ដើមសម្រាប់ AI coding agent។ Homebrew, ទាញយក DMG, ដំឡើង CLI, និងធ្វើបច្ចុប្បន្នភាពស្វ័យប្រវត្តិតាមរយៈ Sparkle។",
|
||
"intro": "cmux គឺជាទែមីណល macOS ដើមស្រាលដែលបង្កើតនៅលើ Ghostty សម្រាប់គ្រប់គ្រង AI coding agent ជាច្រើន។ វាមានផ្ទាំងបញ្ឈរ, ផ្ទាំងជូនដំណឹង, និង API គ្រប់គ្រងផ្អែកលើ socket។",
|
||
"install": "ដំឡើង",
|
||
"dmgRecommended": "DMG (បានណែនាំ)",
|
||
"dmgDesc": "បើកឯកសារ .dmg ហើយអូស cmux ទៅថតកម្មវិធី។ cmux ធ្វើបច្ចុប្បន្នភាពស្វ័យប្រវត្តិតាមរយៈ Sparkle, ដូច្នេះអ្នកត្រូវទាញយកតែម្ដងប៉ុណ្ណោះ។",
|
||
"homebrew": "Homebrew",
|
||
"updateLater": "ដើម្បីធ្វើបច្ចុប្បន្នភាពនៅពេលក្រោយ:",
|
||
"firstLaunchCallout": "នៅពេលបើកដំបូង, macOS អាចស្នើឱ្យអ្នកបញ្ជាក់ការបើកកម្មវិធីពីអ្នកអភិវឌ្ឍន៍ដែលបានកំណត់អត្តសញ្ញាណ។ ចុច <strong>បើក</strong> ដើម្បីបន្ត។",
|
||
"verifyTitle": "ផ្ទៀងផ្ទាត់ការដំឡើង",
|
||
"verifyDesc": "បើក cmux ហើយអ្នកគួរឃើញ:",
|
||
"verifyItem1": "បង្អួចទែមីណលជាមួយរបារចំហៀងផ្ទាំងបញ្ឈរនៅខាងឆ្វេង",
|
||
"verifyItem2": "workspace ដំបូងមួយបានបើករួចហើយ",
|
||
"verifyItem3": "ទែមីណល Ghostty រួចរាល់សម្រាប់ការបញ្ចូល",
|
||
"cliSetup": "ដំឡើង CLI",
|
||
"cliDesc": "cmux រួមបញ្ចូលឧបករណ៍បន្ទាត់ពាក្យបញ្ជាសម្រាប់ស្វ័យប្រវត្តិកម្ម។ នៅក្នុងទែមីណល cmux វាដំណើរការដោយស្វ័យប្រវត្តិ។ ដើម្បីប្រើ CLI ពីក្រៅ cmux, បង្កើត symlink:",
|
||
"cliThen": "បន្ទាប់មកអ្នកអាចដំណើរការពាក្យបញ្ជាដូចជា:",
|
||
"autoUpdates": "បច្ចុប្បន្នភាពស្វ័យប្រវត្តិ",
|
||
"autoUpdatesDesc": "cmux ពិនិត្យរកបច្ចុប្បន្នភាពដោយស្វ័យប្រវត្តិតាមរយៈ Sparkle។ នៅពេលមានបច្ចុប្បន្នភាព អ្នកនឹងឃើញសញ្ញាបច្ចុប្បន្នភាពក្នុងរបារចំណងជើង។ អ្នកក៏អាចពិនិត្យដោយផ្ទាល់តាមរយៈ cmux > Check for Updates ក្នុងរបារម៉ឺនុយ។",
|
||
"sessionRestore": "ស្ដារវគ្គ (អាកប្បកិរិយាបច្ចុប្បន្ន)",
|
||
"sessionRestoreDesc": "បន្ទាប់ពីបើកឡើងវិញ, cmux ស្ដារប្លង់និងទិន្នន័យមេតាប៉ុណ្ណោះ:",
|
||
"sessionItem1": "ប្លង់បង្អួច, workspace, និងបន្ទះ",
|
||
"sessionItem2": "ថតការងារ",
|
||
"sessionItem3": "ប្រវត្តិរមូរទែមីណល (ខិតខំអស់ពីសមត្ថភាព)",
|
||
"sessionItem4": "URL កម្មវិធីរុករកនិងប្រវត្តិរុករក",
|
||
"sessionCallout": "cmux មិនទាន់ស្ដារស្ថានភាពដំណើរការផ្ទាល់ទេ។ វគ្គកម្មវិធីទែមីណលដែលកំពុងដំណើរការដូចជា Claude Code, tmux, និង vim មិនត្រូវបានបន្តបន្ទាប់ពីចាប់ផ្ដើមកម្មវិធីឡើងវិញទេ។",
|
||
"requirements": "តម្រូវការ",
|
||
"reqItem1": "macOS 14.0 ឬក្រោយ",
|
||
"reqItem2": "Mac Apple Silicon ឬ Intel",
|
||
"metaTitle": "ចាប់ផ្តើម"
|
||
},
|
||
"concepts": {
|
||
"title": "គោលគំនិត",
|
||
"metaDescription": "របៀបដែល cmux រៀបចំទែមីណល: បង្អួច, workspace, បន្ទះ, និង surface។ ឋានានុក្រមពីក្រោយរបារចំហៀង, បំបែក, និង socket API។",
|
||
"intro": "cmux រៀបចំទែមីណលរបស់អ្នកក្នុងឋានានុក្រមបួនកម្រិត។ ការយល់ដឹងពីកម្រិតទាំងនេះជួយនៅពេលប្រើ socket API, CLI, និងផ្លូវកាត់ក្ដារចុច។",
|
||
"hierarchy": "ឋានានុក្រម",
|
||
"windowTitle": "បង្អួច",
|
||
"windowDesc": "បង្អួច macOS។ បើកបង្អួចជាច្រើនជាមួយ {shortcut}។ បង្អួចនីមួយៗមានរបារចំហៀងផ្ទាល់ខ្លួនជាមួយ workspace ឯករាជ្យ។",
|
||
"workspaceTitle": "Workspace",
|
||
"workspaceDesc": "ធាតុរបារចំហៀង។ workspace នីមួយៗមានបន្ទះបំបែកមួយ ឬច្រើន។ Workspace គឺជាអ្វីដែលអ្នកឃើញរាយក្នុងរបារចំហៀងឆ្វេង។",
|
||
"workspaceNote": "ក្នុង UI និងផ្លូវកាត់ក្ដារចុច, workspace ជារឿយៗត្រូវបានហៅថា \"ផ្ទាំង\" ព្រោះវាប្រព្រឹត្តដូចផ្ទាំងក្នុងរបារចំហៀង។ Socket API និងអថេរបរិស្ថានប្រើពាក្យ \"workspace\"។",
|
||
"contextHeader": "បរិបទ",
|
||
"termUsedHeader": "ពាក្យដែលប្រើ",
|
||
"sidebarUI": "UI របារចំហៀង",
|
||
"tab": "ផ្ទាំង",
|
||
"keyboardShortcuts": "ផ្លូវកាត់ក្ដារចុច",
|
||
"workspaceOrTab": "Workspace ឬផ្ទាំង",
|
||
"socketAPI": "Socket API",
|
||
"environmentVariable": "អថេរបរិស្ថាន",
|
||
"workspaceShortcuts": "ផ្លូវកាត់: {new} (ថ្មី), {jump} (លោត), {close} (បិទ), {prevNext} (មុន/បន្ទាប់)",
|
||
"paneTitle": "បន្ទះ",
|
||
"paneDesc": "តំបន់បំបែកក្នុង workspace។ បង្កើតដោយបំបែកជាមួយ {right} (ស្ដាំ) ឬ {down} (ក្រោម)។ រុករករវាងបន្ទះជាមួយ {nav} + គ្រាប់ចុចទិសដៅ។",
|
||
"paneNote": "បន្ទះនីមួយៗអាចមាន surface ជាច្រើន (ផ្ទាំងក្នុងបន្ទះ)។",
|
||
"surfaceTitle": "Surface",
|
||
"surfaceDesc": "ផ្ទាំងក្នុងបន្ទះ។ បន្ទះនីមួយៗមានរបារផ្ទាំងផ្ទាល់ខ្លួន ហើយអាចមាន surface ជាច្រើន។ បង្កើតជាមួយ {new}, រុករកជាមួយ {prev} / {next} ឬ {jump}។",
|
||
"surfaceNote": "Surface គឺជាវគ្គទែមីណល ឬកម្មវិធីរុករកម្នាក់ៗដែលអ្នកធ្វើអន្តរកម្មជាមួយ។ Surface នីមួយៗមានអថេរបរិស្ថាន CMUX_SURFACE_ID ផ្ទាល់ខ្លួន។",
|
||
"panelTitle": "Panel",
|
||
"panelDesc": "មាតិកានៅក្នុង surface។ បច្ចុប្បន្នមានពីរប្រភេទ:",
|
||
"panelTerminal": "ទែមីណល: វគ្គទែមីណល Ghostty",
|
||
"panelBrowser": "កម្មវិធីរុករក: web view ដែលបង្កប់",
|
||
"panelNote": "Panel ភាគច្រើនជាគោលគំនិតខាងក្នុង។ នៅក្នុង socket API និង CLI, អ្នកធ្វើអន្តរកម្មជាមួយ surface ជាជាង panel ដោយផ្ទាល់។",
|
||
"visualExample": "ឧទាហរណ៍ដែលមើលឃើញ",
|
||
"visualExampleDesc": "ក្នុងឧទាហរណ៍នេះ:",
|
||
"visualItem1": "បង្អួចមានរបារចំហៀងជាមួយ workspace បី (dev, server, logs)",
|
||
"visualItem2": "Workspace \"dev\" ត្រូវបានជ្រើសរើស, បង្ហាញបន្ទះពីរនៅជាប់គ្នា",
|
||
"visualItem3": "បន្ទះ 1 មាន surface ពីរ ([S1] និង [S2] ក្នុងរបារផ្ទាំង), ជាមួយ S1 កំពុងដំណើរការ",
|
||
"visualItem4": "បន្ទះ 2 មាន surface មួយ",
|
||
"visualItem5": "Surface នីមួយៗមាន panel (ទែមីណលក្នុងករណីនេះ)",
|
||
"summary": "សង្ខេប",
|
||
"levelHeader": "កម្រិត",
|
||
"whatItIsHeader": "អ្វីដែលវាជា",
|
||
"createdByHeader": "បង្កើតដោយ",
|
||
"identifiedByHeader": "កំណត់អត្តសញ្ញាណដោយ",
|
||
"macosWindow": "បង្អួច macOS",
|
||
"sidebarEntry": "ធាតុរបារចំហៀង",
|
||
"splitRegion": "តំបន់បំបែក",
|
||
"tabWithinPane": "ផ្ទាំងក្នុងបន្ទះ",
|
||
"terminalOrBrowser": "ទែមីណល ឬកម្មវិធីរុករក",
|
||
"automatic": "ស្វ័យប្រវត្តិ",
|
||
"paneIdSocket": "Pane ID (socket API)",
|
||
"panelIdInternal": "Panel ID (ខាងក្នុង)",
|
||
"metaTitle": "គំនិត"
|
||
},
|
||
"configuration": {
|
||
"title": "កំណត់រចនាសម្ព័ន្ធ",
|
||
"metaDescription": "កំណត់រចនាសម្ព័ន្ធ cmux តាមរយៈឯកសារកំណត់រចនាសម្ព័ន្ធ Ghostty។ ពុម្ពអក្សរ, ស្បែក, ពណ៌, រចនាប័ទ្មបន្ទះបំបែក, ប្រវត្តិរមូរ, និងការកំណត់កម្មវិធីសម្រាប់មុខងារស្វ័យប្រវត្តិកម្ម។",
|
||
"intro": "cmux អានកំណត់រចនាសម្ព័ន្ធពីឯកសារកំណត់រចនាសម្ព័ន្ធ Ghostty, ផ្ដល់ឱ្យអ្នកនូវជម្រើសដែលធ្លាប់ស្គាល់ប្រសិនបើអ្នកមកពី Ghostty។",
|
||
"configLocations": "ទីតាំងឯកសារកំណត់រចនាសម្ព័ន្ធ",
|
||
"configLocationsDesc": "cmux ស្វែងរកកំណត់រចនាសម្ព័ន្ធនៅទីតាំងទាំងនេះ (តាមលំដាប់):",
|
||
"createConfig": "បង្កើតឯកសារកំណត់រចនាសម្ព័ន្ធប្រសិនបើមិនមាន:",
|
||
"appearance": "រូបរាង",
|
||
"font": "ពុម្ពអក្សរ",
|
||
"colors": "ពណ៌",
|
||
"splitPanes": "បន្ទះបំបែក",
|
||
"behavior": "អាកប្បកិរិយា",
|
||
"scrollback": "ប្រវត្តិរមូរ",
|
||
"workingDirectory": "ថតការងារ",
|
||
"appSettings": "ការកំណត់កម្មវិធី",
|
||
"appSettingsDesc": "ការកំណត់ក្នុងកម្មវិធីមានតាមរយៈ cmux > Settings ({shortcut}):",
|
||
"themeMode": "មុខងារស្បែក",
|
||
"themeSystem": "ប្រព័ន្ធ: តាម macOS",
|
||
"themeLight": "ភ្លឺ: មុខងារភ្លឺជានិច្ច",
|
||
"themeDark": "ងងឹត: មុខងារងងឹតជានិច្ច",
|
||
"automationMode": "មុខងារស្វ័យប្រវត្តិកម្ម",
|
||
"automationModeDesc": "កម្រិតចូលប្រើ socket:",
|
||
"automationOff": "បិទ: គ្មានការគ្រប់គ្រង socket (សុវត្ថិភាពបំផុត)",
|
||
"automationCmux": "ដំណើរការ cmux ប៉ុណ្ណោះ: អនុញ្ញាតតែដំណើរការដែលចាប់ផ្ដើមក្នុងទែមីណល cmux ភ្ជាប់",
|
||
"automationAll": "allowAll: អនុញ្ញាតដំណើរការមូលដ្ឋានណាមួយភ្ជាប់ (CMUX_SOCKET_MODE=allowAll, បដិសេធអថេរបរិស្ថានប៉ុណ្ណោះ)",
|
||
"automationCallout": "នៅលើម៉ាស៊ីនចែករំលែក, ពិចារណាប្រើមុខងារ \"បិទ\" ឬ \"ដំណើរការ cmux ប៉ុណ្ណោះ\"។",
|
||
"browserLinkBehavior": "អាកប្បកិរិយាតំណកម្មវិធីរុករក",
|
||
"browserLinkDesc": "នៅក្នុងការកំណត់ > កម្មវិធីរុករក, cmux បង្ហាញបញ្ជី host ពីរជាមួយគោលបំណងផ្សេងគ្នា:",
|
||
"browserHostsEmbed": "Host ដែលត្រូវបើកក្នុងកម្មវិធីរុករកដែលបង្កប់: អនុវត្តចំពោះតំណដែលចុចពីលទ្ធផលទែមីណល។ Host ក្នុងបញ្ជីនេះបើកក្នុង cmux; host ផ្សេងទៀតបើកក្នុងកម្មវិធីរុករកលំនាំដើមរបស់អ្នក។ គាំទ្រ host មួយ ឬ wildcard ក្នុងមួយជួរ (ឧទាហរណ៍: example.com, *.internal.example)។",
|
||
"browserHostsHttp": "HTTP Host ដែលអនុញ្ញាតក្នុងកម្មវិធីរុករកដែលបង្កប់: អនុវត្តតែចំពោះ HTTP (មិនមែន HTTPS) URL។ Host ក្នុងបញ្ជីនេះអាចបើកក្នុង cmux ដោយមិនមានការព្រមានទេ។ លំនាំដើមរួមមាន localhost, 127.0.0.1, ::1, 0.0.0.0, និង *.localtest.me។",
|
||
"exampleConfig": "ឧទាហរណ៍កំណត់រចនាសម្ព័ន្ធ",
|
||
"metaTitle": "ការកំណត់រចនាសម្ព័ន្ធ"
|
||
},
|
||
"customCommands": {
|
||
"title": "ពាក្យបញ្ជាផ្ទាល់ខ្លួន",
|
||
"metaTitle": "ពាក្យបញ្ជាផ្ទាល់ខ្លួន",
|
||
"metaDescription": "កំណត់ពាក្យបញ្ជាផ្ទាល់ខ្លួននិងប្លង់ workspace ក្នុង cmux.json។ ការកំណត់រចនាសម្ព័ន្ធតាមគម្រោងនិងសាកល ជាមួយការតាមដានឯកសារដោយផ្ទាល់។",
|
||
"intro": "កំណត់ពាក្យបញ្ជាផ្ទាល់ខ្លួននិងប្លង់ workspace ដោយបន្ថែមឯកសារ cmux.json ទៅឫសគម្រោងរបស់អ្នក ឬ ~/.config/cmux/។ ពាក្យបញ្ជាលេចឡើងក្នុងបន្ទះពាក្យបញ្ជា។",
|
||
"fileLocations": "ទីតាំងឯកសារ",
|
||
"fileLocationsDesc": "cmux រកការកំណត់រចនាសម្ព័ន្ធនៅ២កន្លែង:",
|
||
"localConfig": "តាមគម្រោង:",
|
||
"localConfigDesc": "ស្ថិតក្នុងថតគម្រោងរបស់អ្នក, មានអាទិភាព",
|
||
"globalConfig": "សាកល:",
|
||
"globalConfigDesc": "អនុវត្តចំពោះគម្រោងទាំងអស់, បំពេញពាក្យបញ្ជាដែលមិនបានកំណត់ក្នុងតំបន់",
|
||
"precedenceNote": "ពាក្យបញ្ជាក្នុងតំបន់បដិសេធពាក្យបញ្ជាសាកលដែលមានឈ្មោះដូចគ្នា។",
|
||
"liveReload": "ការផ្លាស់ប្ដូរត្រូវបានទទួលស្គាល់ដោយស្វ័យប្រវត្តិ — មិនចាំបាច់ចាប់ផ្ដើមឡើងវិញ។",
|
||
"schema": "ស្គីម៉ា",
|
||
"schemaDesc": "ឯកសារ cmux.json មានអារ៉េ commands។ ពាក្យបញ្ជានីមួយៗគឺជាពាក្យបញ្ជា shell សាមញ្ញ ឬនិយាមព workspace ពេញលេញ:",
|
||
"simpleCommands": "ពាក្យបញ្ជាសាមញ្ញ",
|
||
"simpleCommandsDesc": "ពាក្យបញ្ជាសាមញ្ញដំណើរការពាក្យបញ្ជា shell ក្នុងទែមីណាលដែលបានផ្ដោតបច្ចុប្បន្ន:",
|
||
"simpleCommandFields": "វាល",
|
||
"fieldName": "បង្ហាញក្នុងបន្ទះពាក្យបញ្ជា (ចាំបាច់)",
|
||
"fieldDescription": "ការពិពណ៌នាជាជម្រើស",
|
||
"fieldKeywords": "ពាក្យស្វែងរកបន្ថែមសម្រាប់បន្ទះពាក្យបញ្ជា",
|
||
"fieldCommand": "ពាក្យបញ្ជា shell ដំណើរការក្នុងទែមីណាលដែលបានផ្ដោត",
|
||
"fieldConfirm": "បង្ហាញប្រអប់បញ្ជាក់មុននឹងដំណើរការ",
|
||
"simpleCommandCwdNote": "ពាក្យបញ្ជាសាមញ្ញដំណើរការក្នុងថតការងារបច្ចុប្បន្នរបស់ terminal ដែលកំពុងផ្ដោត។ ប្រសិនបើពាក្យបញ្ជារបស់អ្នកពឹងផ្អែកលើផ្លូវទាក់ទងនឹងគម្រោង សូមបន្ថែមពីមុខ",
|
||
"simpleCommandCwdRepoRoot": "ដើម្បីដំណើរការពីឫសនៃ repo ឬ",
|
||
"simpleCommandCwdCustomPath": "សម្រាប់ថតណាមួយជាក់លាក់។",
|
||
"workspaceCommands": "ពាក្យបញ្ជា workspace",
|
||
"workspaceCommandsDesc": "ពាក្យបញ្ជា workspace បង្កើត workspace ថ្មីជាមួយប្លង់ផ្ទាល់ខ្លួននៃការបំបែក, ទែមីណាល, និងបន្ទះកម្មវិធីរុករក:",
|
||
"workspaceFields": "វាល workspace",
|
||
"wsFieldName": "ឈ្មោះផ្ទាំង workspace (លំនាំដើមគឺឈ្មោះពាក្យបញ្ជា)",
|
||
"wsFieldCwd": "ថតការងារសម្រាប់ workspace",
|
||
"wsFieldColor": "ពណ៌ផ្ទាំង workspace",
|
||
"wsFieldLayout": "ដើមប្លង់ដែលកំណត់ការបំបែកនិងបន្ទះ",
|
||
"restartBehavior": "ឥរិយាបថចាប់ផ្ដើមឡើងវិញ",
|
||
"restartBehaviorDesc": "គ្រប់គ្រងអ្វីដែលកើតឡើងនៅពេល workspace ដែលមានឈ្មោះដូចគ្នារួចមានស្រាប់:",
|
||
"restartIgnore": "ប្ដូរទៅ workspace ដែលមានស្រាប់ (លំនាំដើម)",
|
||
"restartRecreate": "បិទហើយបង្កើតឡើងវិញដោយមិនសួរ",
|
||
"restartConfirm": "សួរអ្នកប្រើប្រាស់មុននឹងបង្កើតឡើងវិញ",
|
||
"layoutTree": "ដើមប្លង់",
|
||
"layoutTreeDesc": "ដើមប្លង់កំណត់របៀបដែលបន្ទះត្រូវបានរៀបចំដោយប្រើថ្នាំងការបំបែករៀងគ្នា:",
|
||
"splitNode": "ថ្នាំងការបំបែក",
|
||
"splitNodeDesc": "ចែកចន្លោះទៅជាកូន២:",
|
||
"or": "ឬ",
|
||
"splitPosition": "ទីតាំងខ្សែបំបែកពី 0.1 ដល់ 0.9 (លំនាំដើម 0.5)",
|
||
"splitChildren": "ថ្នាំងកូនពិតប្រាកដ២ (ការបំបែក ឬបន្ទះ)",
|
||
"paneNode": "ថ្នាំងបន្ទះ",
|
||
"paneNodeDesc": "ថ្នាំងស្លឹកមួយដែលមាន surface មួយ ឬច្រើន (ផ្ទាំងនៅក្នុងបន្ទះ)។",
|
||
"surfaceDefinition": "និយាម surface",
|
||
"surfaceDefinitionDesc": "surface នីមួយៗក្នុងបន្ទះអាចជាទែមីណាល ឬកម្មវិធីរុករក:",
|
||
"surfaceName": "ចំណងជើងផ្ទាំងផ្ទាល់ខ្លួន",
|
||
"surfaceCommand": "ពាក្យបញ្ជា shell ដំណើរការដោយស្វ័យប្រវត្តិពេលបង្កើត (ទែមីណាលតែប៉ុណ្ណោះ)",
|
||
"surfaceCwd": "ថតការងារសម្រាប់ surface នេះ",
|
||
"surfaceEnv": "អថេរបរិស្ថានជាគូ key-value",
|
||
"surfaceUrl": "URL ដែលត្រូវបើក (កម្មវិធីរុករកតែប៉ុណ្ណោះ)",
|
||
"surfaceFocus": "ផ្ដោតលើ surface នេះបន្ទាប់ពីបង្កើត",
|
||
"cwdResolution": "ការដោះស្រាយថតការងារ",
|
||
"omitted": "លុបចោល",
|
||
"cwdRelative": "ថតការងារ workspace",
|
||
"cwdSubdir": "ទាក់ទងនឹងថតការងារ workspace",
|
||
"cwdHome": "ពង្រីកទៅថតផ្ទះ",
|
||
"absolutePath": "ផ្លូវដាច់ខាត",
|
||
"cwdAbsolute": "ប្រើដូចដែលមាន",
|
||
"fullExample": "ឧទាហរណ៍ពេញលេញ"
|
||
},
|
||
"keyboardShortcuts": {
|
||
"title": "ផ្លូវកាត់ក្ដារចុច",
|
||
"description": "ផ្លូវកាត់ក្ដារចុចទាំងអស់ដែលមានក្នុង cmux, ដាក់ជាក្រុមតាមប្រភេទ។",
|
||
"metaDescription": "ផ្លូវកាត់ក្ដារចុច cmux ទាំងអស់សម្រាប់ workspace, surface, បន្ទះបំបែក, កម្មវិធីរុករក, ជូនដំណឹង, ស្វែងរក, និងការគ្រប់គ្រងបង្អួចនៅលើ macOS។",
|
||
"searchPlaceholder": "ស្វែងរកផ្លូវកាត់...",
|
||
"searchLabel": "ស្វែងរកផ្លូវកាត់ក្ដារចុច",
|
||
"noResults": "រកមិនឃើញផ្លូវកាត់ទេ",
|
||
"noResultsHint": "សាកល្បងពាក្យស្វែងរកផ្សេង",
|
||
"cat": {
|
||
"workspaces": "Workspace",
|
||
"workspacesBlurb": "Workspace មាននៅក្នុងរបារចំហៀង។ Workspace នីមួយៗមានសំណុំបន្ទះនិង surface ផ្ទាល់ខ្លួន។",
|
||
"surfaces": "Surface",
|
||
"surfacesBlurb": "Surface គឺជាផ្ទាំងក្នុងបន្ទះ។",
|
||
"splitPanes": "បន្ទះបំបែក",
|
||
"browser": "កម្មវិធីរុករក",
|
||
"notifications": "ជូនដំណឹង",
|
||
"find": "ស្វែងរក",
|
||
"terminal": "ទែមីណល",
|
||
"window": "បង្អួច"
|
||
},
|
||
"sc": {
|
||
"ws-new": "Workspace ថ្មី",
|
||
"ws-prev": "Workspace មុន",
|
||
"ws-next": "Workspace បន្ទាប់",
|
||
"ws-jump-1-8": "លោតទៅ workspace 1–8",
|
||
"ws-jump-last": "លោតទៅ workspace ចុងក្រោយ",
|
||
"ws-close": "បិទ workspace",
|
||
"ws-rename": "ប្ដូរឈ្មោះ workspace",
|
||
"sf-new": "Surface ថ្មី",
|
||
"sf-prev-1": "Surface មុន",
|
||
"sf-prev-2": "Surface មុន",
|
||
"sf-jump-1-8": "លោតទៅ surface 1–8",
|
||
"sf-jump-last": "លោតទៅ surface ចុងក្រោយ",
|
||
"sf-close": "បិទ surface",
|
||
"sp-right": "បំបែកស្ដាំ",
|
||
"sp-down": "បំបែកក្រោម",
|
||
"sp-focus": "ផ្ដោតបន្ទះតាមទិសដៅ",
|
||
"sp-browser-right": "បំបែកកម្មវិធីរុករកស្ដាំ",
|
||
"sp-browser-down": "បំបែកកម្មវិធីរុករកក្រោម",
|
||
"br-open": "បើក surface កម្មវិធីរុករក",
|
||
"br-addr": "ផ្ដោតរបារអាសយដ្ឋាន",
|
||
"br-forward": "មុខ",
|
||
"br-reload": "ផ្ទុកទំព័រឡើងវិញ",
|
||
"br-devtools": "បើកឧបករណ៍អ្នកអភិវឌ្ឍន៍",
|
||
"nt-panel": "បង្ហាញផ្ទាំងជូនដំណឹង",
|
||
"nt-latest": "លោតទៅមិនទាន់អានថ្មីបំផុត",
|
||
"nt-flash": "កេះការភ្លឺ",
|
||
"fd-find": "ស្វែងរក",
|
||
"fd-next-prev": "ស្វែងរកបន្ទាប់ / មុន",
|
||
"fd-hide": "លាក់របារស្វែងរក",
|
||
"fd-selection": "ប្រើការជ្រើសរើសសម្រាប់ស្វែងរក",
|
||
"tm-clear": "សម្អាតប្រវត្តិរមូរ",
|
||
"tm-copy": "ចម្លង (ជាមួយការជ្រើសរើស)",
|
||
"tm-paste": "បិទភ្ជាប់",
|
||
"tm-font": "បង្កើន / បន្ថយទំហំពុម្ពអក្សរ",
|
||
"tm-reset": "កំណត់ទំហំពុម្ពអក្សរឡើងវិញ",
|
||
"wn-new": "បង្អូចថ្មី",
|
||
"wn-settings": "ការកំណត់",
|
||
"wn-reload": "ផ្ទុកកំណត់រចនាសម្ព័ន្ធឡើងវិញ",
|
||
"wn-quit": "ចាកចេញ"
|
||
},
|
||
"metaTitle": "ផ្លូវកាត់ក្តារចុច"
|
||
},
|
||
"api": {
|
||
"title": "ឯកសារយោង API",
|
||
"metaDescription": "ឯកសារយោង cmux CLI និង Unix socket API។ ការគ្រប់គ្រង workspace, បន្ទះបំបែក, ការគ្រប់គ្រងការបញ្ចូល, ជូនដំណឹង, ទិន្នន័យមេតារបារចំហៀង, អថេរបរិស្ថាន, និងវិធីកំណត់។",
|
||
"intro": "cmux ផ្ដល់ទាំងឧបករណ៍ CLI និង Unix socket សម្រាប់ការគ្រប់គ្រងដោយកម្មវិធី។ ពាក្យបញ្ជាទាំងអស់មានតាមរយៈចំណុចប្រទាក់ទាំងពីរ។",
|
||
"socket": "Socket",
|
||
"buildHeader": "Build",
|
||
"pathHeader": "ផ្លូវ",
|
||
"release": "Release",
|
||
"debug": "Debug",
|
||
"taggedDebug": "Tagged debug build",
|
||
"socketOverride": "បដិសេធជាមួយអថេរបរិស្ថាន CMUX_SOCKET_PATH។ ផ្ញើសំណើ JSON មួយដែលបញ្ចប់ដោយបន្ទាត់ថ្មីក្នុងការហៅម្ដង:",
|
||
"socketCallout": "សំណើ socket JSON ត្រូវប្រើ method និង params។ JSON payloads ចាស់ v1 ដូចជា <legacy>'{'\"command\":\"...\"'}'</legacy> មិនត្រូវបានគាំទ្រទេ។",
|
||
"accessModes": "មុខងារចូលប្រើ",
|
||
"modeHeader": "មុខងារ",
|
||
"descriptionHeader": "ការពិពណ៌នា",
|
||
"howToEnableHeader": "របៀបបើក",
|
||
"offMode": "Socket បានបិទ",
|
||
"offEnable": "UI ការកំណត់ ឬ CMUX_SOCKET_MODE=off",
|
||
"cmuxOnlyMode": "មានតែដំណើរការដែលចាប់ផ្ដើមក្នុងទែមីណល cmux ប៉ុណ្ណោះអាចភ្ជាប់បាន។",
|
||
"cmuxOnlyEnable": "មុខងារលំនាំដើមក្នុង UI ការកំណត់",
|
||
"allowAllMode": "អនុញ្ញាតដំណើរការមូលដ្ឋានណាមួយភ្ជាប់ (គ្មានការពិនិត្យដើមកំណើត)។",
|
||
"allowAllEnable": "បដិសេធអថេរបរិស្ថានប៉ុណ្ណោះ: CMUX_SOCKET_MODE=allowAll",
|
||
"accessCallout": "នៅលើម៉ាស៊ីនចែករំលែក, ប្រើមុខងារបិទ ឬដំណើរការ cmux ប៉ុណ្ណោះ។",
|
||
"cliOptions": "ជម្រើស CLI",
|
||
"flagHeader": "ទង់",
|
||
"customSocketPath": "ផ្លូវ socket ផ្ទាល់ខ្លួន",
|
||
"outputJson": "លទ្ធផលក្នុងទម្រង់ JSON",
|
||
"targetWindow": "កំណត់គោលដៅបង្អួចជាក់លាក់",
|
||
"targetWorkspace": "កំណត់គោលដៅ workspace ជាក់លាក់",
|
||
"targetSurface": "កំណត់គោលដៅ surface ជាក់លាក់",
|
||
"idFormat": "គ្រប់គ្រងទម្រង់ identifier ក្នុងលទ្ធផល JSON",
|
||
"workspaceCommands": "ពាក្យបញ្ជា workspace",
|
||
"listWorkspacesDesc": "រាយ workspace ដែលបើកទាំងអស់។",
|
||
"newWorkspaceDesc": "បង្កើត workspace ថ្មី។",
|
||
"selectWorkspaceDesc": "ប្ដូរទៅ workspace ជាក់លាក់។",
|
||
"currentWorkspaceDesc": "ទទួល workspace ដែលកំពុងដំណើរការបច្ចុប្បន្ន។",
|
||
"closeWorkspaceDesc": "បិទ workspace។",
|
||
"splitCommands": "ពាក្យបញ្ជាបំបែក",
|
||
"newSplitDesc": "បង្កើតបន្ទះបំបែកថ្មី។ ទិសដៅ: ឆ្វេង, ស្ដាំ, លើ, ក្រោម។",
|
||
"listSurfacesDesc": "រាយ surface ទាំងអស់ក្នុង workspace បច្ចុប្បន្ន។",
|
||
"focusSurfaceDesc": "ផ្ដោតលើ surface ជាក់លាក់។",
|
||
"inputCommands": "ពាក្យបញ្ជាបញ្ចូល",
|
||
"sendDesc": "ផ្ញើអត្ថបទបញ្ចូលទៅទែមីណលដែលកំពុងផ្ដោត។",
|
||
"sendKeyDesc": "ផ្ញើការចុចគ្រាប់ចុច។ គ្រាប់ចុច: enter, tab, escape, backspace, delete, up, down, left, right។",
|
||
"sendSurfaceDesc": "ផ្ញើអត្ថបទទៅ surface ជាក់លាក់។",
|
||
"sendKeySurfaceDesc": "ផ្ញើការចុចគ្រាប់ចុចទៅ surface ជាក់លាក់។",
|
||
"notificationCommands": "ពាក្យបញ្ជាជូនដំណឹង",
|
||
"notifyDesc": "ផ្ញើជូនដំណឹង។",
|
||
"listNotificationsDesc": "រាយជូនដំណឹងទាំងអស់។",
|
||
"clearNotificationsDesc": "សម្អាតជូនដំណឹងទាំងអស់។",
|
||
"sidebarMetadata": "ពាក្យបញ្ជាទិន្នន័យមេតារបារចំហៀង",
|
||
"sidebarMetadataDesc": "កំណត់ស្ថានភាព pill, របារវឌ្ឍនភាព, និងធាតុកំណត់ត្រាក្នុងរបារចំហៀងសម្រាប់ workspace ណាមួយ។ មានប្រយោជន៍សម្រាប់ស្គ្រីប build, ការរួមបញ្ចូល CI, និង AI coding agent ដែលចង់បង្ហាញស្ថានភាពក្នុងមួយភ្លែត។",
|
||
"setStatusDesc": "កំណត់ស្ថានភាព pill របារចំហៀង។ ប្រើកូនសោតែមួយគត់ដើម្បីឧបករណ៍ផ្សេងៗអាចគ្រប់គ្រងធាតុផ្ទាល់ខ្លួន។",
|
||
"clearStatusDesc": "លុបធាតុស្ថានភាពរបារចំហៀងតាមកូនសោ។",
|
||
"listStatusDesc": "រាយធាតុស្ថានភាពរបារចំហៀងទាំងអស់សម្រាប់ workspace។",
|
||
"setProgressDesc": "កំណត់របារវឌ្ឍនភាពក្នុងរបារចំហៀង (0.0 ដល់ 1.0)។",
|
||
"clearProgressDesc": "សម្អាតរបារវឌ្ឍនភាពរបារចំហៀង។",
|
||
"logDesc": "បន្ថែមធាតុកំណត់ត្រាទៅរបារចំហៀង។ កម្រិត: info, progress, success, warning, error។",
|
||
"clearLogDesc": "សម្អាតធាតុកំណត់ត្រារបារចំហៀងទាំងអស់។",
|
||
"listLogDesc": "រាយធាតុកំណត់ត្រារបារចំហៀង។",
|
||
"sidebarStateDesc": "បង្ហាញទិន្នន័យមេតារបារចំហៀងទាំងអស់ (cwd, git branch, ports, ស្ថានភាព, វឌ្ឍនភាព, កំណត់ត្រា)។",
|
||
"utilityCommands": "ពាក្យបញ្ជាឧបករណ៍",
|
||
"pingDesc": "ពិនិត្យថា cmux កំពុងដំណើរការនិងឆ្លើយតប។",
|
||
"capabilitiesDesc": "រាយវិធី socket ដែលមាននិងមុខងារចូលប្រើបច្ចុប្បន្ន។",
|
||
"identifyDesc": "បង្ហាញបរិបទបង្អួច/workspace/បន្ទះ/surface ដែលកំពុងផ្ដោត។",
|
||
"envVariables": "អថេរបរិស្ថាន",
|
||
"variableHeader": "អថេរ",
|
||
"socketPathDesc": "បដិសេធផ្លូវ socket ដែលប្រើដោយ CLI និងការរួមបញ្ចូល",
|
||
"socketEnableDesc": "បង្ខំបើក/បិទ socket (1/0, true/false, on/off)",
|
||
"socketModeDesc": "បដិសេធមុខងារចូលប្រើ (cmuxOnly, allowAll, off)។ ទទួលផងដែរ cmux-only/cmux_only និង allow-all/allow_all",
|
||
"workspaceIdDesc": "កំណត់ស្វ័យប្រវត្តិ: ID workspace បច្ចុប្បន្ន",
|
||
"surfaceIdDesc": "កំណត់ស្វ័យប្រវត្តិ: ID surface បច្ចុប្បន្ន",
|
||
"termProgramDesc": "កំណត់ទៅ ghostty",
|
||
"termDesc": "កំណត់ទៅ xterm-ghostty",
|
||
"envCallout": "តម្លៃ CMUX_SOCKET_MODE ចាស់ full និង notifications នៅតែទទួលបានសម្រាប់ភាពឆបគ្នា។",
|
||
"detectingCmux": "កំណត់ cmux",
|
||
"examples": "ឧទាហរណ៍",
|
||
"pythonClient": "Python client",
|
||
"shellScript": "Shell script",
|
||
"buildScriptNotification": "Build script ជាមួយជូនដំណឹង",
|
||
"metaTitle": "ឯកសារ API"
|
||
},
|
||
"notifications": {
|
||
"title": "ជូនដំណឹង",
|
||
"metaDescription": "ផ្ញើជូនដំណឹងផ្ទៃតុពី AI agent និងស្គ្រីបក្នុង cmux។ CLI, OSC 99/777 escape sequences, និងការរួមបញ្ចូល Claude Code hooks។",
|
||
"intro": "cmux គាំទ្រជូនដំណឹងផ្ទៃតុ, អនុញ្ញាតឱ្យ AI agent និងស្គ្រីបជូនដំណឹងអ្នកនៅពេលពួកវាត្រូវការការយកចិត្តទុកដាក់។",
|
||
"lifecycle": "វដ្តជីវិត",
|
||
"received": "បានទទួល: ជូនដំណឹងបង្ហាញក្នុង panel, ការជូនដំណឹងផ្ទៃតុដំណើរការ (ប្រសិនបើមិនត្រូវបានបង្ហាប់)",
|
||
"unread": "មិនទាន់អាន: ស្លាកបង្ហាញនៅលើផ្ទាំង workspace",
|
||
"read": "បានអាន: សម្អាតនៅពេលអ្នកមើល workspace នោះ",
|
||
"cleared": "បានសម្អាត: លុបចេញពី panel",
|
||
"suppression": "ការបង្ហាប់",
|
||
"suppressionDesc": "ការជូនដំណឹងផ្ទៃតុត្រូវបានបង្ហាប់នៅពេល:",
|
||
"suppressItem1": "បង្អួច cmux កំពុងផ្ដោត",
|
||
"suppressItem2": "workspace ជាក់លាក់ដែលផ្ញើជូនដំណឹងកំពុងដំណើរការ",
|
||
"suppressItem3": "ផ្ទាំងជូនដំណឹងកំពុងបើក",
|
||
"notificationPanel": "ផ្ទាំងជូនដំណឹង",
|
||
"notificationPanelDesc": "ចុច <openShortcut>⌘⇧I</openShortcut> ដើម្បីបើកផ្ទាំងជូនដំណឹង។ ចុចជូនដំណឹងដើម្បីលោតទៅ workspace នោះ។ ចុច <jumpShortcut>⌘⇧U</jumpShortcut> ដើម្បីលោតផ្ទាល់ទៅ workspace ដែលមានជូនដំណឹងមិនទាន់អានថ្មីបំផុត។",
|
||
"customCommand": "ពាក្យបញ្ជាផ្ទាល់ខ្លួន",
|
||
"customCommandDesc": "ដំណើរការពាក្យបញ្ជា shell រាល់ពេលជូនដំណឹងត្រូវបានកំណត់។ កំណត់វាក្នុងការកំណត់ > កម្មវិធី > ពាក្យបញ្ជាជូនដំណឹង។ ពាក្យបញ្ជាដំណើរការតាមរយៈ /bin/sh -c ជាមួយអថេរបរិស្ថានទាំងនេះ:",
|
||
"customCommandNote": "ពាក្យបញ្ជាដំណើរការដោយឯករាជ្យពីឧបករណ៍ជ្រើសរើសសម្លេងប្រព័ន្ធ។ កំណត់ឧបករណ៍ជ្រើសរើសទៅ \"គ្មាន\" ដើម្បីប្រើតែពាក្យបញ្ជាផ្ទាល់ខ្លួន ឬរក្សាទាំងពីរសម្រាប់សម្លេងប្រព័ន្ធនិងសកម្មភាពផ្ទាល់ខ្លួន។",
|
||
"sending": "ការផ្ញើជូនដំណឹង",
|
||
"cli": "CLI",
|
||
"osc777Title": "OSC 777 (សាមញ្ញ)",
|
||
"osc777Desc": "ពិធីការ RXVT ប្រើទម្រង់ថេរជាមួយចំណងជើងនិងមាតិកា:",
|
||
"osc99Title": "OSC 99 (សម្បូរ)",
|
||
"osc99Desc": "ពិធីការ Kitty គាំទ្រចំណងជើងរង និង ID ជូនដំណឹង:",
|
||
"variableHeader": "អថេរ",
|
||
"descriptionHeader": "ការពិពណ៌នា",
|
||
"envTitle": "ចំណងជើងជូនដំណឹង (ឈ្មោះ workspace ឬឈ្មោះកម្មវិធី)",
|
||
"envSubtitle": "ចំណងជើងរងជូនដំណឹង",
|
||
"envBody": "អត្ថបទមាតិកាជូនដំណឹង",
|
||
"cmpTitleBody": "ចំណងជើង + មាតិកា",
|
||
"cmpSubtitle": "ចំណងជើងរង",
|
||
"cmpNotificationId": "ID ជូនដំណឹង",
|
||
"cmpComplexity": "ភាពស្មុគស្មាញ",
|
||
"cmpYes": "បាទ/ចាស",
|
||
"cmpNo": "ទេ",
|
||
"cmpHigher": "ខ្ពស់ជាង",
|
||
"cmpLower": "ទាបជាង",
|
||
"featureHeader": "មុខងារ",
|
||
"comparisonCallout": "ប្រើ OSC 777 សម្រាប់ជូនដំណឹងសាមញ្ញ។ ប្រើ OSC 99 នៅពេលអ្នកត្រូវការចំណងជើងរង ឬ ID ជូនដំណឹង។ ប្រើ CLI (cmux notify) សម្រាប់ការរួមបញ្ចូលងាយស្រួលបំផុត។",
|
||
"claudeCodeHooks": "Claude Code hooks",
|
||
"claudeCodeHooksDesc": "cmux រួមបញ្ចូលជាមួយ <link>Claude Code</link> តាមរយៈ hooks ដើម្បីជូនដំណឹងអ្នកនៅពេលភារកិច្ចបានបញ្ចប់។",
|
||
"createHookScript": "1. បង្កើត hook script",
|
||
"configureClaude": "2. កំណត់រចនាសម្ព័ន្ធ Claude Code",
|
||
"restartNote": "ចាប់ផ្ដើម Claude Code ឡើងវិញដើម្បីអនុវត្ត hooks។",
|
||
"copilotCliHooks": "GitHub Copilot CLI",
|
||
"copilotCliHooksDesc": "Copilot CLI គាំទ្រ<link>hooks</link> ដែលដំណើរការពាក្យបញ្ជា shell នៅព្រឹត្តិការណ៍វដ្តជីវិតដូចជាការបញ្ជូន prompt ការបញ្ឈប់ agent និងកំហុស។",
|
||
"copilotCliRepoHooks": "សម្រាប់ hooks កម្រិត repo សូមបង្កើតឯកសារ .github/hooks/notify.json ដោយមានរចនាសម្ព័ន្ធដូចគ្នា:",
|
||
"integrationExamples": "ឧទាហរណ៍ការរួមបញ្ចូល",
|
||
"notifyAfterLong": "ជូនដំណឹងបន្ទាប់ពីពាក្យបញ្ជាយូរ",
|
||
"python": "Python",
|
||
"nodejs": "Node.js",
|
||
"tmuxPassthrough": "tmux passthrough",
|
||
"tmuxDesc": "ប្រសិនបើប្រើ tmux ក្នុង cmux, បើក passthrough:",
|
||
"metaTitle": "ការជូនដំណឹង"
|
||
},
|
||
"browserAutomation": {
|
||
"title": "ស្វ័យប្រវត្តិកម្មកម្មវិធីរុករក",
|
||
"metaDescription": "ឯកសារយោងពាក្យបញ្ជាកម្មវិធីរុករក cmux សម្រាប់ការរុករក, អន្តរកម្ម DOM, ការរង់ចាំ, ការពិនិត្យ, ការវាយតម្លៃ JavaScript, ផ្ទាំង, ប្រអប់សន្ទនា, ស៊ុម, ការទាញយក, និងស្ថានភាពកម្មវិធីរុករក។",
|
||
"intro": "ក្រុមពាក្យបញ្ជាកម្មវិធីរុករក cmux ផ្ដល់ស្វ័យប្រវត្តិកម្មកម្មវិធីរុករកលើ surface កម្មវិធីរុករក cmux។ ប្រើវាដើម្បីរុករក, ធ្វើអន្តរកម្មជាមួយធាតុ DOM, ពិនិត្យស្ថានភាពទំព័រ, វាយតម្លៃ JavaScript, និងគ្រប់គ្រងទិន្នន័យវគ្គកម្មវិធីរុករក។",
|
||
"commandIndex": "សន្ទស្សន៍ពាក្យបញ្ជា",
|
||
"categoryHeader": "ប្រភេទ",
|
||
"subcommandsHeader": "ពាក្យបញ្ជារង",
|
||
"navAndTargeting": "ការរុករកនិងការកំណត់គោលដៅ",
|
||
"waiting": "ការរង់ចាំ",
|
||
"domInteraction": "អន្តរកម្ម DOM",
|
||
"inspection": "ការពិនិត្យ",
|
||
"jsAndInjection": "JavaScript និងការចាក់បញ្ចូល",
|
||
"framesDialogsDownloads": "ស៊ុម, ប្រអប់សន្ទនា, ការទាញយក",
|
||
"stateAndSession": "ស្ថានភាពនិងទិន្នន័យវគ្គ",
|
||
"tabsAndLogs": "ផ្ទាំងនិងកំណត់ត្រា",
|
||
"targetingSurface": "ការកំណត់គោលដៅ surface កម្មវិធីរុករក",
|
||
"targetingDesc": "ពាក្យបញ្ជារងភាគច្រើនត្រូវការ surface គោលដៅ។ អ្នកអាចបញ្ជូនវាតាមទីតាំង ឬជាមួយ --surface។",
|
||
"navigation": "ការរុករក",
|
||
"waitingSection": "ការរង់ចាំ",
|
||
"waitingDesc": "ប្រើ wait ដើម្បីរង់ចាំរហូតដល់ selectors, អត្ថបទ, ផ្នែក URL, ស្ថានភាពផ្ទុក, ឬលក្ខខណ្ឌ JavaScript ត្រូវបានបំពេញ។",
|
||
"domSection": "អន្តរកម្ម DOM",
|
||
"domDesc": "សកម្មភាពផ្លាស់ប្ដូរគាំទ្រ --snapshot-after សម្រាប់ការផ្ទៀងផ្ទាត់រហ័សក្នុងស្គ្រីប។",
|
||
"inspectionSection": "ការពិនិត្យ",
|
||
"inspectionDesc": "ប្រើ getters ដែលមានរចនាសម្ព័ន្ធសម្រាប់ស្គ្រីប និង snapshots/screenshots សម្រាប់ការត្រួតពិនិត្យដោយមនុស្ស។",
|
||
"jsSection": "ការវាយតម្លៃនិងចាក់បញ្ចូល JavaScript",
|
||
"stateSection": "ស្ថានភាព",
|
||
"stateDesc": "ពាក្យបញ្ជាទិន្នន័យវគ្គគ្រប cookies, local/session storage, និង snapshots ស្ថានភាពកម្មវិធីរុករកពេញលេញ។",
|
||
"tabsSection": "ផ្ទាំង",
|
||
"tabsDesc": "ប្រតិបត្តិការផ្ទាំងកម្មវិធីរុករកផ្គូផ្គងទៅ surface កម្មវិធីរុករកក្នុងក្រុមផ្ទាំងកម្មវិធីរុករកដែលកំពុងដំណើរការ។",
|
||
"consoleSection": "Console និងកំហុស",
|
||
"dialogsSection": "ប្រអប់សន្ទនា",
|
||
"framesSection": "ស៊ុម",
|
||
"downloadsSection": "ការទាញយក",
|
||
"commonPatterns": "គំរូទូទៅ",
|
||
"patternNavigate": "រុករក, រង់ចាំ, ពិនិត្យ",
|
||
"patternForm": "បំពេញទម្រង់និងផ្ទៀងផ្ទាត់អត្ថបទជោគជ័យ",
|
||
"patternDebug": "ចាប់យកវត្ថុ debug នៅពេលបរាជ័យ",
|
||
"patternSession": "រក្សាទុកនិងស្ដារវគ្គកម្មវិធីរុករក",
|
||
"metaTitle": "ស្វ័យប្រវត្តិកម្មកម្មវិធីរុករក"
|
||
},
|
||
"changelog": {
|
||
"title": "កំណត់ត្រាផ្លាស់ប្ដូរ",
|
||
"metaDescription": "កំណត់ត្រាការចេញផ្សាយ cmux និងប្រវត្តិកំណែ។ មុខងារថ្មី, ការជួសជុលកំហុស, និងការផ្លាស់ប្ដូរសម្រាប់ទែមីណល macOS ដើម។",
|
||
"metaTitle": "កំណត់ហេតុផ្លាស់ប្ដូរ"
|
||
},
|
||
"navItems": {
|
||
"gettingStarted": "ចាប់ផ្ដើម",
|
||
"concepts": "គោលគំនិត",
|
||
"configuration": "កំណត់រចនាសម្ព័ន្ធ",
|
||
"customCommands": "ពាក្យបញ្ជាផ្ទាល់ខ្លួន",
|
||
"keyboardShortcuts": "ផ្លូវកាត់ក្ដារចុច",
|
||
"apiReference": "ឯកសារយោង API",
|
||
"browserAutomation": "ស្វ័យប្រវត្តិកម្មកម្មវិធីរុករក",
|
||
"notifications": "ជូនដំណឹង",
|
||
"agentIntegrations": "Agent Integrations",
|
||
"claudeCodeTeams": "Claude Code Teams",
|
||
"ohMyOpenCode": "oh-my-opencode",
|
||
"changelog": "កំណត់ត្រាផ្លាស់ប្ដូរ"
|
||
}
|
||
},
|
||
"legal": {
|
||
"privacyPolicy": "គោលការណ៍ឯកជនភាព",
|
||
"termsOfService": "លក្ខខណ្ឌសេវាកម្ម",
|
||
"eula": "EULA"
|
||
},
|
||
"testimonials": {
|
||
"mitchellh": "មួយថ្ងៃទៀត មួយគម្រោង libghostty ទៀត លើកនេះជាទែមីណល macOS ជាមួយផ្ទាំងបញ្ឈរ, ការរៀបចំ/ជូនដំណឹងល្អជាង, កម្មវិធីរុករកបង្កប់/សរសេរស្គ្រីបបាន ដែលមានគោលដៅជាពិសេសសម្រាប់អ្នកដែលប្រើ workflow agent ផ្អែកលើទែមីណលច្រើន។",
|
||
"schrockn": "នេះជាផលិតផលដែលខ្ញុំកំពុងស្វែងរកពិតប្រាកដ។ បន្ទាប់ពីប្រើពីរម៉ោងព្រឹកនេះ ខ្ញុំស្រឡាញ់វាហើយ។",
|
||
"egrefen": "ខ្ញុំប្រើវាពេញចុងសប្តាហ៍ ហើយវាអស្ចារ្យ។",
|
||
"max4c": "នេះជាឧបករណ៍ដែលខ្ញុំចូលចិត្តបំផុតក្នុងរយៈពេលពីរសប្តាហ៍កន្លងមក",
|
||
"asaza": "cmux មើលទៅល្អខ្លាំងម៉ង អាចដល់ពេលហើយនឹងបញ្ចប់ជាមួយ VSCode",
|
||
"johnthedebs": "នេះមើលទៅអស្ចារ្យ។ ចូលចិត្តគំនិតនៅទីនេះ ជាពិសេស: ភាពអាចសរសេរកម្មវិធីបាន, UI ជាស្រទាប់, កម្មវិធីរុករកជាមួយ API។ រង់ចាំសាកល្បង។ ក៏ចង់និយាយថាខ្ញុំពិតជាអរគុណ Mitchell Hashimoto ដែលបង្កើត libghostty។ វារឹតតែគួរឱ្យរំភើបសម្រាប់អ្នកប្រើទែមីណល។",
|
||
"joeriddles": "ផ្ទាំងបញ្ឈរក្នុងទែមីណលរបស់ខ្ញុំ! ខ្ញុំមិនដែលគិតដល់រឿងនេះមកមុនទេ។ ខ្ញុំប្រើហើយចូលចិត្តផ្ទាំងបញ្ឈរ Firefox។",
|
||
"dchu17": "សាកល្បងហើយវាងាយស្រួលប្រើ។ ធ្វើបានល្អ!",
|
||
"afruth": "ខ្ញុំចូលចិត្តវា ប្រើក្នុងថ្ងៃកន្លងមកជាមួយគម្រោងបីស្របគ្នា នីមួយៗមាន worktree ជាច្រើន។ ការមានវាជាមួយ lazygit និង yazi / nvim ធ្វើឱ្យខ្ញុំផលិតភាពជាងធម្មតាដោយមិនចាំបាច់តាមរក ghostty / iTerm ជាច្រើនវិន្ដូ។ ក៏មានអារម្មណ៍ធម្មជាតិជាង tmux ដែរ។",
|
||
"northprint": "សាកល្បង cmux ព្រោះវាមើលទៅល្អ — វាល្អពិតមែន",
|
||
"indykish": "cmux ល្អដែរ។",
|
||
"kataring": "ប្ដូរមកប្រើ cmux.dev",
|
||
"scottw": "នេះជាការរកឃើញដ៏មានប្រយោជន៍។ ខ្ញុំណែនាំវាខ្លាំងណាស់។",
|
||
"johnblythe": "ទាញយកមកចុងសប្តាហ៍កន្លងមក ហើយចូលចិត្តវា។ រង់ចាំអ្វីបែបនេះយូរហើយ។",
|
||
"bchris91": "នេះជាអ្វីដែលខ្ញុំចង់បានពិតប្រាកដ។ ការងារអស្ចារ្យ អរគុណ!",
|
||
"connorelsea": "ប្រើមកមួយសប្តាហ៍ហើយ វាល្អខ្លាំង។ ផ្ទាំងបញ្ឈរសម្រាប់កិច្ចការនីមួយៗ។ ខាងក្នុង Claude នៅម្ខាង កម្មវិធីរុករកជាមួយ PR និងធនធាននៅម្ខាង ប្ដូររវាងកិច្ចការហើយរក្សាការរៀបចំ។ ផ្សំជាមួយ skills ឱ្យ Claude តាមដាន CI ដដែលៗ ។ រឹតតែស្រស់បំព្រង",
|
||
"tonkotsuboy": "ខ្ញុំប្ដូរពី Warp មក Ghostty ដើមឆ្នាំ ប៉ុន្តែឥឡូវខ្ញុំប្ដូរមក cmux។ ផ្ទាំងបញ្ឈរងាយស្រួល ហើយខ្ញុំពេញចិត្តដែលទទួលបានជូនដំណឹងពេល Claude Code បានបញ្ចប់។ វាផ្អែកលើ Ghostty ដូច្នេះល្បឿនលឿនប្រែកៗនៅតែមាន។ ការបង្ហាញ branch និង completion ដែលខ្ញុំបានកំណត់ក្នុង Ghostty នៅតែដំណើរការដែរ។"
|
||
},
|
||
"nightly": {
|
||
"title": "cmux NIGHTLY",
|
||
"subtitle": "កំណែចុងក្រោយពីសាខា main",
|
||
"metaTitle": "cmux NIGHTLY — កំណែ Nightly",
|
||
"metaDescription": "ទាញយក cmux NIGHTLY កម្មវិធីដាច់ដោយឡែកដែលត្រូវបានបង្កើតដោយស្វ័យប្រវត្តិពី commit ចុងក្រោយនៅលើ main។ ដំណើរការស្របជាមួយកំណែស្ថិរភាពជាមួយការអាប់ដេតស្វ័យប្រវត្តិផ្ទាល់ខ្លួន។",
|
||
"description": "cmux NIGHTLY ត្រូវបានបង្កើតដោយស្វ័យប្រវត្តិពី commit ចុងក្រោយនៅលើ main។ វាមាន bundle ID ផ្ទាល់ខ្លួន ដូច្នេះវាដំណើរការស្របជាមួយកំណែស្ថិរភាពដោយគ្មានជម្លោះ។ ប្រើវាដើម្បីសាកល្បងមុខងារថ្មីមុនពេលចេញផ្សាយ។",
|
||
"download": "ទាញយក NIGHTLY សម្រាប់ Mac",
|
||
"warning": "កំណែ nightly អាចមានកំហុស ឬមុខងារមិនទាន់ពេញលេញ។ ប្រសិនបើមានបញ្ហា សូមរាយការណ៍នៅលើ <githubLink>GitHub</githubLink> ឬក្នុង <discordLink>#nightly-bugs នៅលើ Discord</discordLink> ហើយប្តូរទៅកំណែស្ថិរភាពវិញ។"
|
||
},
|
||
"languageSwitcher": {
|
||
"label": "ភាសា"
|
||
},
|
||
"wallOfLove": {
|
||
"title": "ជញ្ជៀងសរសើរ",
|
||
"description": "អ្វីដែលមនុស្សនិយាយអំពី cmux។"
|
||
}
|
||
}
|