fix: address verified v6 app findings

Fix authentication recovery, account imports, application tracking, resume
editing and exports, sharing, API contracts, provider selection, and private
local attachments. Preserve authored content during PDF pagination.

Update guides, generated OpenAPI output, and translation catalogs to match
verified behavior and documented constraints.

Validation: 1,019 tests passed; 12 database/OAuth integration tests skipped.
Ten affected package typechecks, production build, Biome, and package
boundaries passed.
This commit is contained in:
Amruth Pillai
2026-09-30 06:15:09 +02:00
parent d6f03a3e67
commit 9a803305c8
212 changed files with 7519 additions and 2647 deletions
+200 -38
View File
@@ -1190,8 +1190,7 @@
"type": "string"
},
"apiKey": {
"type": "string",
"minLength": 1
"type": "string"
}
},
"required": [
@@ -1401,8 +1400,7 @@
"type": "string"
},
"apiKey": {
"type": "string",
"minLength": 1
"type": "string"
},
"enabled": {
"type": "boolean"
@@ -2220,6 +2218,11 @@
"posting": {
"type": "boolean",
"description": "Share the job posting it's for (on by default)."
},
"applicationId": {
"type": "string",
"minLength": 1,
"maxLength": 255
}
}
}
@@ -18604,28 +18607,6 @@
}
}
},
"/resume/getRoot": {
"post": {
"operationId": "resume.getRoot",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"anyOf": [
{},
{
"not": {}
}
]
}
}
}
}
}
}
},
"/resumes/tags": {
"get": {
"operationId": "listResumeTags",
@@ -18890,14 +18871,19 @@
"name": "tags",
"in": "query",
"schema": {
"type": "array",
"items": {
"type": "string"
},
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
}
],
"default": []
},
"style": "deepObject",
"explode": true,
"allowEmptyValue": true,
"allowReserved": true
},
@@ -27864,6 +27850,66 @@
}
}
}
},
"403": {
"description": "403",
"content": {
"application/json": {
"schema": {
"oneOf": [
{
"type": "object",
"properties": {
"defined": {
"const": true
},
"code": {
"const": "RESUME_LOCKED"
},
"status": {
"const": 403
},
"message": {
"type": "string",
"default": "Unlock the resume first."
},
"data": {}
},
"required": [
"defined",
"code",
"status",
"message"
]
},
{
"type": "object",
"properties": {
"defined": {
"const": false
},
"code": {
"type": "string"
},
"status": {
"type": "number"
},
"message": {
"type": "string"
},
"data": {}
},
"required": [
"defined",
"code",
"status",
"message"
]
}
]
}
}
}
}
}
},
@@ -32374,6 +32420,66 @@
}
}
},
"403": {
"description": "403",
"content": {
"application/json": {
"schema": {
"oneOf": [
{
"type": "object",
"properties": {
"defined": {
"const": true
},
"code": {
"const": "RESUME_LOCKED"
},
"status": {
"const": 403
},
"message": {
"type": "string",
"default": "Unlock the resume first."
},
"data": {}
},
"required": [
"defined",
"code",
"status",
"message"
]
},
{
"type": "object",
"properties": {
"defined": {
"const": false
},
"code": {
"type": "string"
},
"status": {
"type": "number"
},
"message": {
"type": "string"
},
"data": {}
},
"required": [
"defined",
"code",
"status",
"message"
]
}
]
}
}
}
},
"409": {
"description": "409",
"content": {
@@ -32471,6 +32577,66 @@
}
}
}
},
"403": {
"description": "403",
"content": {
"application/json": {
"schema": {
"oneOf": [
{
"type": "object",
"properties": {
"defined": {
"const": true
},
"code": {
"const": "RESUME_LOCKED"
},
"status": {
"const": 403
},
"message": {
"type": "string",
"default": "Unlock the resume first."
},
"data": {}
},
"required": [
"defined",
"code",
"status",
"message"
]
},
{
"type": "object",
"properties": {
"defined": {
"const": false
},
"code": {
"type": "string"
},
"status": {
"type": "number"
},
"message": {
"type": "string"
},
"data": {}
},
"required": [
"defined",
"code",
"status",
"message"
]
}
]
}
}
}
}
}
}
@@ -37192,7 +37358,7 @@
}
],
"requestBody": {
"required": true,
"required": false,
"content": {
"application/json": {
"schema": {
@@ -37215,11 +37381,7 @@
"minLength": 1,
"description": "The slug of the copy. Generated from the name, and made unique, when omitted."
}
},
"required": [
"name",
"tags"
]
}
}
}
}