mirror of
https://github.com/AmruthPillai/Reactive-Resume.git
synced 2026-07-09 12:34:54 +10:00
6d8d8f6e55
* chore(ai): remove local AI store now that providers live server-side
The Zustand-based useAIStore has been replaced by the server-side
aiProviders oRPC router (encrypted credentials persisted in DB).
Delete the dead store + tests, drop the ./store export, and remove
zustand/immer deps which are no longer referenced anywhere in
packages/ai/src/.
* feat(agent): archive/delete actions and read-only state for agent threads
- Backend: mark archived threads as read-only in threads.get and reject
messages.send with CONFLICT when the thread is archived.
- Frontend: render archived threads in the sidebar with muted styling and
an Archived badge; add a per-thread dropdown menu in the chat header
with Archive (non-destructive) and Delete (with confirmation); show a
read-only banner above the message list that disambiguates archived
vs. missing-resource causes; suppress the Retry and Stop buttons in
read-only mode.
- Tests: new packages/api/src/services/agent.test.ts covering the
archived-thread isReadOnly flag and the archived-thread send refusal.
* fix(agent): abort run on archive and verify ownership before deleting thread
- threads.archive: before flipping status, abort any in-flight run controller
and clear the active-run state on the thread; cleanup failures are logged
but do not block the status update.
- threads.delete: assert thread ownership via getThread before destructive
work so an authenticated user cannot wipe another user's attachment rows
by passing a foreign threadId.
Adds focused tests for both behaviors.
* feat(agent): display patch diffs and surface revert conflicts
Render apply_resume_patch tool messages with a status-aware card (applied/
reverted/conflicted), expandable operation list, and a Revert button that
correctly handles RESUME_VERSION_CONFLICT responses. Adds unit tests for
the inverse-patch builder and the agentService.actions.revert flow.
* chore(agent): remove out-of-scope attachment tests accidentally added in Task 6
The Task 6 commit (73ef1acca) accidentally re-introduced three attachment-
related tests that belong to a separate task:
- `buildAttachmentModelParts > converts text, image, supported binary, and
unsupported attachments into model parts`
- `agentService.messages.send > persists the user message with file UI parts
and links selected attachments to it` (was failing — the `ToolLoopAgent`
mock is not callable as a constructor)
- `agentService.messages.send > rejects attachments that are missing, foreign,
or already linked before persisting a message`
These were likely re-added during a stash recovery and were not requested
for Task 6, whose scope was limited to the `agentService.actions.revert`
flow. Remove them along with the helpers/fixtures (`buildAttachment`,
`buildActiveThread`, `selectWhereResult`, `selectOrderByResult`) that they
were the only consumers of. `selectLimitResult` is preserved because it is
used by the revert tests.
* chore(agent): configure runtime dependencies
* feat(db): add agent workspace schema
* feat(api): add agent backend services
* feat(web): add agent workspace UI
* chore(agent): remove legacy builder assistant
* test(agent): make agent stream mocks constructible
* chore(web): remove unused resume replacement hook
* feat(api): add unsafe AI base URL flag
* chore(dev): expose local services in compose
* fix(web): normalize resume preview gaps
* feat(api): improve agent tool handling
* feat(web): polish agent workspace UI
* chore: update dependencies
* fix(api,web): address PR review feedback for agent workspace
Security/correctness:
- Restrict AI provider URLs to http/https even in unsafe mode
- Stop exposing Redis on host network by default
- Make .env.local optional and drop app profile in compose.dev.yml
- Store agent attachments with private ACL on S3
- Reset provider test status when provider/model/baseURL changes
- Decouple non-agent AI endpoints from REDIS_URL requirement
- Fix JSON Patch add inverse for existing object members
- Wrap resume patch + agent action insert in db transaction
- Validate partialMessage at runtime and rate-limit attachment uploads
- Add unique index on agent_messages (thread_id, sequence)
UX/bugs:
- Mark agent thread route as ssr: false and guard SSE chunk parsing
- Show config-specific banner only on known configuration error
- Gate AI provider checks behind loading state in resume import
- Fix relative-time formatter blank gap between 45-59 seconds
- Clarify thread delete confirmation message
Polish:
- Raise ENCRYPTION_SECRET minimum to 32 characters
- Bucket AI rate limits by resumeId/threadId/messageId
- Trim form values before submitting AI provider config
- Use single key identifier and nullish-coalesce baseURL display
* fix: address ai agent review feedback
* fix: preserve mobile agent chat state
* docs: add ai agent workspace guides
* feat: introduce design system for Reactive Resume
69 lines
2.5 KiB
Plaintext
69 lines
2.5 KiB
Plaintext
---
|
|
title: "Using the builder dock"
|
|
description: "Learn how to use the floating dock in the resume builder for zooming, page layout, sharing, exports, and AI assistance."
|
|
---
|
|
|
|
The builder dock is the floating toolbar at the bottom of the resume builder. It gives you quick access to preview controls, sharing, exports, and the AI assistant without leaving the resume canvas.
|
|
|
|
<Frame caption="Resume builder with the floating dock">
|
|
<img
|
|
src="/images/guides/using-the-builder-dock/screenshot-1.webp"
|
|
alt="Resume builder showing the floating dock with preview controls and download shortcuts"
|
|
/>
|
|
</Frame>
|
|
|
|
## Preview controls
|
|
|
|
Use the left side of the dock to control the preview.
|
|
|
|
| Control | What it does |
|
|
| --- | --- |
|
|
| **Zoom in** | Increases the preview zoom. |
|
|
| **Zoom out** | Decreases the preview zoom. |
|
|
| **Center view** | Re-centers the resume preview in the canvas. |
|
|
| **Toggle page stacking** | Switches between stacked pages and side-by-side pages. |
|
|
|
|
These controls only affect the editor preview. They do not change the exported PDF, DOCX, or JSON file.
|
|
|
|
## Open the AI assistant
|
|
|
|
Click the assistant button to open or close the **AI Resume Assistant**.
|
|
|
|
The assistant can propose targeted resume changes, such as rewriting a summary, tightening bullet points, adding metrics, or tailoring the resume to a job description. You review proposed changes before they are applied.
|
|
|
|
<Info>
|
|
The assistant requires a tested and enabled AI provider. See
|
|
[Using Artificial Intelligence](/guides/using-ai) for setup and [Using AI in the builder](/guides/using-ai-in-the-builder)
|
|
for the builder workflow.
|
|
</Info>
|
|
|
|
## Copy the public URL
|
|
|
|
Click **Copy URL** to copy the resume's public link.
|
|
|
|
The URL is based on your username and the resume slug:
|
|
|
|
```txt
|
|
https://rxresu.me/{username}/{slug}
|
|
```
|
|
|
|
<Warning>
|
|
Copying the URL does not make the resume public by itself. To allow visitors to open the link, enable public access in
|
|
the **Sharing** section of the right sidebar.
|
|
</Warning>
|
|
|
|
## Download files from the dock
|
|
|
|
The dock includes quick download buttons for:
|
|
|
|
- **JSON** for backups, imports, and structured data workflows;
|
|
- **DOCX** for editing in Microsoft Word or Google Docs;
|
|
- **PDF** for sharing, uploading, and printing.
|
|
|
|
These are the same export formats available in the right sidebar's **Export** section.
|
|
|
|
<Tip>
|
|
Use the dock when you already know which file you need. Use the right sidebar's **Export** section when you want the
|
|
format descriptions next to each button.
|
|
</Tip>
|