* fix(den): lighten admin backoffice delivery
Keep the admin panel fast by loading billing status on demand, show clearer upstream failure states, and retry Den deploys once when Render returns a transient update_failed so backend rollouts are less brittle.
* chore: drop workflow edit from admin follow-up
Give internal operators a protected Den dashboard with seeded allowlist access plus signup, worker, and billing visibility so user support no longer requires direct database inspection.
* fix(settings): move runtime status into General
Surface OpenCode and OpenWork status where users manage connection settings, and keep the footer focused on tips and entry points.
* fix(settings): move runtime status into Advanced
Keep the General tab focused on everyday preferences and place engine/server status in the Advanced panel with matching validation screenshots.
Make the Tauri dev app clearly identifiable so it no longer looks like the production build in the Dock or title bar. This gives local testing a separate name and inverted icon while keeping the production bundle unchanged.
- Update pricing copy from 'Cancel anytime' to 'Free for a limited time'
- Remove target=_blank from deploy link
- Remove comparison animation and simplify value section
- Add hire CTA with mailto link and reorganize cost cards
Co-authored-by: jcllobet <jcllobet@users.noreply.github.com>
Co-authored-by: Oz <oz-agent@warp.dev>
The markdown rendering pipeline had a race condition where the throttle
delay (80-550ms) caused renderedMarkdown() to return an empty string,
which made the <Show> fallback render raw markdown syntax (e.g. **bold**,
`code`, # headings) instead of formatted text.
Three fixes:
1. useThrottledValue: apply first value synchronously (no delay on
initial render) so the component never starts in the fallback state
2. Rendering fallback: when markdown is expected but not yet available
(throttle in progress), render nothing instead of raw text
3. Edge case: if marked.parse returns empty HTML for non-empty source,
treat as parse failure and fall back to plain text gracefully
- Add vi.ts with 800 translation keys
- Update Language type to include 'vi'
- Add Vietnamese to LANGUAGE_OPTIONS in picker
- Follow project convention: keep professional terms untranslated
(Skills, Plugins, Commands, Sessions, OpenCode, OpenWork, MCP, etc.)
Closes: Vietnamese language support for OpenWork
* feat(web): add local Den dev stack
* fix(web): stabilize mobile Den worker cards
* fix(web): default empty Den state to new worker
* Add Google auth to Den signup (#847)
* feat(den): add google auth provider
* feat(web): add social signup buttons for den
---------
Co-authored-by: jcllobet <jcllobet@users.noreply.github.com>
---------
Co-authored-by: Jan <jc2897@cornell.edu>
Co-authored-by: jcllobet <jcllobet@users.noreply.github.com>
* feat(den): add google auth provider
* feat(web): add social signup buttons for den
---------
Co-authored-by: jcllobet <jcllobet@users.noreply.github.com>