reactive-resume
reactive-resume
A one-of-a-kind resume builder that keeps your privacy in mind. Completely secure, customizable, portable, open-source and free forever. Try it out today!
PROJECT TOPICS
PROJECT README
Your agents, alive on the desktop — a glowing companion for DeepSeek Harness sessions, context and chat.
Agent Deck keeps DeepSeek Harness close without keeping the full web interface open. It shows live sessions and subagents, provides a real mini-chat, tracks context pressure, switches models and reasoning effort, runs native Harness commands, changes workspaces, accepts file drops, renders safe Markdown, and keeps tool calls compact.
The NeoXider avatar reacts to agent state: breathing while idle, typing while working, floating while waiting, shaking on errors and celebrating completion. The chat carries its own activity light, including while waiting for the API and when the header is hidden in Focus mode. Its colours match the avatar, Orb and Edge; an idle selected chat stays calm even while another session works. Animated colour fields sit behind the panel, with background opacity saved separately from window opacity and activity glow. Harness offline has a muted disconnected state and a Start action. Everything that moves, from the slow aurora to the strips around the log, respects reduced-motion preferences and Settings → Appearance → Motion effects.
![]() |
![]() |
![]() |
![]() |
![]() |
| Full | Focus Mini | Orb | Edge | Minimum 360 px |
![]() |
![]() |
| Live agent overview | Full Harness mini-chat |
![]() |
![]() |
| Exact Workspaces / Ungrouped agent deck | Start inside a folder or ungrouped |
![]() |
![]() |
| Searchable provider/model picker | Markdown + collapsed tool calls |
![]() |
|
| Stable PNG and video attachment previews | |
![]() |
![]() |
| Compact native command palette | Live Harness TODO plan |
![]() |
![]() |
| Readable structured command results | Per-tool status, even in mixed groups |
![]() |
![]() |
| The goal never scrolls away | Compact tool groups, opened on demand |
![]() |
![]() |
| Copy any message, reuse your own | Formatted while it streams |
![]() |
![]() |
| Loading, not empty | One line of feedback, then gone |
![]() |
![]() |
| One-click Focus Chat | Session-aware compact notification |
![]() |
![]() |
| Edit, delete or send queued messages now | Streaming answer grows in place |
![]() |
![]() |
| Reading position stays under user control | Window layers, background opacity and glow |
![]() |
![]() |
| Verified update, one-click restart | Complete UI before the first session |
![]() |
![]() |
| Compact by default | Grows to one third, then scrolls |
0% ring before the first session exists./ palette opens above the composer and merges Harness's two sources: commands/list for /goal, /plan, /compact, /permission and plugin commands, and skill.list for every skill installed in the workspace. Skills are badged as such and sent as ordinary prompts, because a skill is invoked by the model rather than executed by the host.Workspaces membership plus Ungrouped, keep each folder collapsible in one line, and offer a compact action for starting a session inside that group or outside every workspace.tool/call, tool/result, and nested Code Mode dispatches become one expandable group; each child still exposes input, result, timing, and error state.1 attachment and refuses in-place text editing, and a file is previewed by name while its full path is preserved for editing./ above the paperclip and a tightly fitted Send button that leaves the input wide.Ctrl+V adds copied files or clipboard images for review without auto-sending. PNG, JPEG, WebP and GIF files use official image content blocks; sent messages retain tiny image previews or compact file/video chips, while other files become explicit local @path references.dsh web: launch URL once with Connect (or Restart it into an owned instance), and the widget re-mints its session cookie after every restart. It is separate from a failed model turn.default-src 'none', no unsafe-inline, no unsafe-eval), denied window creation, blocked navigation and protocol-checked external links mean model output can render but never execute or navigate.NeoXider-Agent-Deck-*-windows-x64-portable.exe from Releases.http://127.0.0.1:3080, or press Start in the offline banner. The widget prefers an installed official runtime and avoids spawning a duplicate while a previous launch is still starting. If Harness was started outside the widget and its browser index asks for authentication, the banner offers Connect: paste the dsh web: URL from the Harness terminal once and it is remembered.To install the latest release under %LOCALAPPDATA%, create a desktop shortcut and launch it:
One-time upgrade note: 0.5.0 is the first release with in-app updating. Version 0.4.3 and earlier cannot update themselves, so install 0.5.0 manually once; later supported releases can use Settings → Updates.
git clone https://github.com/NeoXider/neoxider-agent-deck.git
cd neoxider-agent-deck
powershell -ExecutionPolicy Bypass -File .\scripts\install-desktop.ps1
Requirements: Node.js 22+ and a running DeepSeek Harness Web profile.
git clone https://github.com/NeoXider/neoxider-agent-deck.git
cd neoxider-agent-deck
npm ci
npm test
npm run test:ui
npm start
Set DSH_WIDGET_URL to use a different Harness endpoint.
| Control | Action |
|---|---|
| Glowing header tabs | Switch between the session list and mini-chat |
| Focus icon in the composer | Hide every surface except chat, attachment previews, input, context and actions; tap again to restore |
| Full-size avatar | Click to collapse to the animated avatar and quick actions; drag to move the window |
| NeoXider / Agent Deck title | Click to open this repository; drag to move the window |
| DeepSeek whale beside the session | Open the selected session directly in Harness Web |
| Edge arrow | Dock to the iridescent edge handle |
| Terminal button | Open the live Harness command palette |
| Model chip | Search providers and models |
| Lightbulb chip | Select reasoning effort |
| Folder chip | Choose or add a workspace |
| Agent / Plan switch | Change the Harness interaction mode |
| Paperclip | Attach files or open the attachment picker |
| Chat icon beside the collapsed pet | Expand the avatar panel; its badge counts the agents currently working |
| Jump-to-latest button | Return to the newest message after reading older chat content |
| Stop beside Send | Cancel only the current running turn |
| Context ring at the far left | Show projected context usage |
| Send at the far right | Submit the current message or attachments |
Click the collapsed avatar or edge handle to restore the full deck. Use the tray menu to quit completely. Drag the avatar by its circle, or the edge handle by its line, and release it anywhere: it snaps to the nearest left or right screen edge and remembers that side. Everything else in those windows is transparent and belongs to whatever is behind them.
The widget does not embed or scrape the Harness web page. It uses the installed Harness RPC contracts directly:
session.list, session.history, session.create, session.prompt, session.cancelsession.updateQueue for authoritative Edit, Delete and Send now queue actionssession.models, session.selectModelworkspace.list, workspace.createcommands/list, commands/executeThis keeps the UI small and avoids coupling it to Harness HTML layout changes. Provider credentials remain inside Harness; the widget never reads API keys.
Every session created or prompted from the widget is explicitly switched to Harness danger-full-access before the prompt runs. This matches the widget's intended trusted-desktop workflow, but it also means the selected agent can read, write, execute, and use configured tools without an additional permission prompt. Use the widget only with models, workspaces, MCP servers, and skills you trust.
npm test
npm run test:platforms
npm run test:input
npm run test:ui
npm audit --audit-level=high
npm run smoke
npm run feature-smoke
npm run chat-smoke
npm run tool-smoke
npm run build
The portable executable is written to release/NeoXider-Agent-Deck-0.9.6-windows-x64-portable.exe.
The test suite verifies the official Harness event shapes, ephemeral reasoning, safe Markdown, tool grouping/correlation, single-instance behavior hooks, compact-window geometry, and UI contracts. test:ui launches Electron in deterministic desktop and minimum-size scenarios and rejects clipped or overflowing layouts. feature-smoke verifies workspace-aware session creation, live command discovery/execution and reasoning-capable model discovery. chat-smoke creates a real Harness session and expects an OK reply from the configured LM Studio route. tool-smoke additionally requires that model to execute a real Harness tool and checks the widget's correlated tool card.
The 0.6.4 acceptance includes an exact local lmstudio/qwen3.8-27b-unleashed Dynamic MCP run through search → inspect → enable → tools → call → skill.load → status → disable → status with zero tool errors and a confirmed stopped Playwright child. During the final repeat, that 27B route failed honestly at LM Studio model startup (Engine protocol startup was aborted), so the same fresh read-only three-tool parity turn was repeated on the available lmstudio/ling-3.0-tiny route: Harness emitted three correlated glob, grep, and read calls/results; the widget produced separate completed cards, cleared live activity on turn/end, and preserved the final Russian answer. Durable receipts: v0.6.4 Dynamic MCP on Qwen 27B, final Tiny multi-tool parity, final Qwen 27B load failure, and the deeper widget streaming parity. The automated acceptance suite additionally covers exact workspace grouping and order, complete 160-to-161-message history pagination, grouped layouts at compact widths, the persistent jump-to-latest affordance, the non-shifting optional Think overlay, 2×2 composer geometry, native compact drag, and every Edge state.
The renderer is sandboxed with contextIsolation enabled and Node.js integration disabled. Local file preparation and Harness requests stay in the main process behind a narrow IPC bridge. Release downloads are bounded and digest-verified before replacement. Current Windows and macOS artifacts are not code-signed, so SmartScreen/Gatekeeper can warn until a signing certificate is configured. See SECURITY.md.
Reduce MCP schema overhead with one lazy tool: NeoXider MCP Hub.
For long-running scripts in DSH, the optional background code integration releases the agent after 1.5 seconds and delivers completion through native background jobs, including after a final answer.
Screen capture, configurable global hotkeys, and the three-session pet switcher ship in 0.5.0; clipboard file/image paste ships in 0.6.4. Remaining overlay diagnostics, per-game profiles, and quiet-notification work is tracked in TODO.md.
Every release is documented in CHANGELOG.md. Source version 0.9.6 adds device approval for Wi-Fi access, fixes authenticated opening from the tray and hotkey, and shows full-context compaction estimates when history supports them.
Windows 10 and 11 are the primary supported target. CI also packages Intel/Apple Silicon
macOS builds and Linux AppImage/deb builds, but those remain experimental. Linux uses
a freedesktop autostart entry; it disables native opacity and enhanced above-windows controls;
Wayland also disables window dragging and Edge mode, while X11 labels its wider interactive
Edge area. When no installed Harness runtime is found, Start Harness relies on npx being
present in the launcher environment, which is not guaranteed for an app started from Finder
or a desktop launcher. Always on top+ targets ordinary and borderless windows;
true exclusive fullscreen can outrank desktop windows, so the repository keeps the native
Xbox Game Bar companion path explicit rather than claiming a guarantee the OS does not give.
Focused issues and pull requests are welcome. Please include a screenshot for visual changes and a test or live smoke receipt for behavior changes.
MIT © NeoXider
Enable Device access on Wi-Fi in the Agent Deck tray menu, then open the Phone address shown there on a device connected to the same trusted network (port 3099). Press Request access and compare the six-digit code with the approval dialog on the computer. Choose Allow or Deny there. No launch token needs to be copied: Deck keeps Harness authentication inside the proxy, and each approved browser receives its own cookie.
Device access is off by default. Keep Deck running; restarting it or disabling access revokes approved devices, and cookies expire after at most 30 days. Port 3080 remains the original Harness endpoint. Open Harness on the computer uses the saved authenticated launch URL. A missing/stale launch URL must be recovered through the normal Harness launcher, not by disabling authentication.
The phone endpoint uses HTTP on the trusted local network. If Windows Firewall blocks it, allow inbound TCP 3099 for the actual Agent Deck executable only from the local subnet. Do not forward this port to the internet. Network addresses are sampled when Deck starts; restart it after an address change. This feature does not change Chrome's debugger notification.
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: desktop-app、agent-monitoring、chat-ui、desktop-companion、desktop-widget、markdown、mcp、model-context-protocol、productivity。