Skip to content

Resume Designer (beta)

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 06 Jun 18:34
64b3d09

Resume Designer 1.15.0-next.112

✨ New features

Profiles

  • Move profile switching into Settings → Account with stats
  • Move the profile switcher beside the brand as an avatar chip
  • Manage-profiles dialog with export, import, and guards
  • Header profile switcher with reload-based switching
  • Per-profile export and import-as-new-profile
  • Multi-profile backup format 2 and scoped legacy restore
  • Share the openrouter api key across profiles
  • Crash-safe adoption migration and boot wiring
  • Registry crud with delete guards
  • Namespace per-profile keys at the appStorage facade
  • Add pure profile key classification module

Library

  • Phase 2 polish - resize-aware preview, backdated adds, scoped empty states
  • Timeline view with per-resume lanes
  • Timeline tab with outcome stats strip
  • Application stats and timeline helpers
  • Live first-page preview in detail pane
  • Detail pane with application tracking and variant actions
  • Add library dialog with tiered search and status chips
  • Add tiered library search module
  • Auto-draft applications when tailoring
  • Add applications store with status pipeline

Bridge

  • Pairing token section in settings data tab
  • Headless per-variant pdf export endpoint
  • Wire loopback requests through the js router
  • Pure request router with auth and all v1 endpoints
  • Context-free ai completion entry point
  • Include learned answers and bridge token in backups
  • Learned-answers store for application q&a
  • Start loopback listener and register bridge_respond
  • Add loopback bridge state, respond command, and request forwarding

Updates & Changelog

  • Split digest summary from full log in release bodies
  • Synthesize a user-level digest with grouped-log fallback
  • Sentinel-based digest validator for release notes

Canvas

  • Actionable empty state when no resume is loaded

Settings

  • Distinguish current profile and keep profile list compact

🐛 Fixes

Profiles

  • Refuse profile ops while a backup restore is guarded
  • Roll back partial adoption copies on a browser quota failure
  • Treat markerless degraded init as adoption pending
  • Keep the blob credential until the shared write is durable
  • Flush an imported profile and roll back if it isn't durable
  • Block switching/creating profiles during adoption recovery
  • Surface profile-dialog save failures to switch/export callers
  • Abort a profile switch when the pre-switch save fails
  • Give the adoption marker a resume- prefix so disk adoption keeps it
  • Validate/coerce registry emoji so a bad one can't blank the app
  • Activate mapping only after sources are durably deleted
  • Never delete adoption sources while mapping is off
  • Roll back a profile import that fails mid-write
  • Keep print mapping off during pending adoption
  • Flush pending edits before exporting the active profile
  • Hide the switcher while an adoption is mid-recovery
  • Include unprefixed live data in a recovery-state profile export
  • Keep mapping inactive when adoption doesn't complete
  • Move adoption keys one at a time to avoid doubling storage
  • Don't recopy a stale source over post-adoption edits
  • Use a filename-safe separator for namespaced storage keys
  • Throw synchronously for unknown export profile ids
  • Gate adoption finalization on every durability barrier
  • Durable adoption barriers and existence-checked key extraction
  • Reject corrupt registries whole and re-roll id collisions

Backup

  • Resume saves only if this import acquired the suspension
  • Only resume saves if this import suspended them
  • Resume saves after a failed flush only on the merge path
  • Re-enable saves when the post-import flush fails
  • Suspend saves before the durable import, not after
  • Suspend saves before a restore reload to prevent stale overwrite
  • Avoid prototype-name collisions in the profile map
  • Reject case-colliding registry ids before a format-2 restore
  • Reject unknown shared keys before a format-2 restore
  • Capture markerless recovery data in full backups
  • Roll back cached imports when the durability flush fails
  • Reconcile orphan namespaces into the exported registry
  • Reject orphan profiles entries before a format-2 restore
  • Roll back a quota-failed import instead of losing the store
  • Capture unprefixed live data in a recovery-state export
  • Reject a non-object shared container before the format-2 wipe
  • Validate shared values before the format-2 wipe
  • Accept keyless profiles in format-2 restores
  • Validate profile entries before wipe and restore quota-safely

Library

  • Persist notes on every edit so they survive a native close
  • Flush pending note edits on teardown
  • Persist application notes during editing, not only on blur
  • Clear appliedAt when reverting an application to prepared
  • Caption and status legend for the timeline view
  • Show tab panels only while active so hidden panes free their space
  • Honest backdated history and guarded timeline jumps
  • Anchor view-all item in variant dropdown
  • Cancel dialog escape-close while renaming via onEscapeKeyDown
  • Keep dialog open when escape cancels a rename
  • Reset rename on escape and pin tailor variant id
  • Route library variant deletes through thread handling
  • Include applications store in full backup

Profile

  • Track a failed markdown import on the tracked-save flag
  • Make renames durable and surface rename failures
  • Make deletion durable before reporting success
  • Abort the switch reload when the pointer is not durable
  • Retry a failed debounced save when flushing

Bridge

  • Reject writes while a destructive import is in flight
  • Polish — init rejection guard, clipboard catch, aria-label, unicode test, comments
  • 404 prototype-key resume ids instead of resolving inherited keys
  • Mirror applications.js storage-error handling in learned answers

Settings

  • Refresh the header avatar after renaming the active profile
  • Surface a quota failure from profile creation
  • Cleared shared api key masks stale blob values

Storage

  • Drop unreachable passthrough branch in flushDeferredWrites
  • Central appStorage guard for backup restores
  • Cancel the coalescing drain timer when a flush forces a drain

Updates & Changelog

  • Require every post-heading digest line to be a bullet
  • Degrade malformed release bodies atomically
  • Reject inline sentinels and bare section headers in digests

Job Descriptions

  • Skip tailor drafts when the pinned résumé was deleted mid-generation
  • Keep tailored changes on the resume they were generated for

Migration

  • Skip legacy import when physical namespaces survive
  • Skip legacy electron import on profiled stores

Onboarding

  • Make dismissing the wizard durable for empty profiles
  • Let a new empty profile's onboarding be dismissed

Updates

  • Gate release-notes dialog on scheduled onboarding too
  • Defer release-notes dialog until onboarding closes

Ci

  • Emit the validated normalized digest, not the raw lines

General

  • Close cross-feature seams from the whole-branch review

PDF Export

  • Hold the export guard across the interactive preview lifecycle

Persistence

  • Keep the blob credential fallback on every settings save

Security

  • Generate profile and thread ids with crypto.getRandomValues

⚡ Improvements

Storage

  • Coalesce write-behind drains instead of one per keystroke