Skip to content

Link reports to original LeetCode problems - #334

Open
ga-1113 wants to merge 1 commit into
sysprog21:mainfrom
ga-1113:issue-152-leetcode-report-link
Open

ga-1113 wants to merge 1 commit into
sysprog21:mainfrom
ga-1113:issue-152-leetcode-report-link

Conversation

@ga-1113

@ga-1113 ga-1113 commented Oct 17, 2026 •

Copy link
Copy Markdown

The completed report now shows an Original problem link directly below its title. The link uses the published problem map to open the corresponding LeetCode page.

The same reference appears in the immediate report, Past attempts, replay, and downloaded Markdown. The lobby loads the map only when a saved report is opened or exported. Unknown or malformed mappings leave the line hidden, and the active interview view is unchanged.

Checks: 138 lobby browser tests, 70 render tests, and 8 history tests passed. Prettier 3.9.9 and ESLint 10.12.0 passed for the changed JavaScript files; the local app was manually tested.

Closes #152

cubic-dev-ai[bot]

This comment was marked as resolved.

Comment thread web/app.js Outdated
Comment thread web/render.js
cubic-dev-ai[bot]

This comment was marked as resolved.

jserv

This comment was marked as outdated.

@ga-1113
ga-1113 force-pushed the issue-152-leetcode-report-link branch from caf95f0 to e40200c Compare October 20, 2026 10:09

@jserv jserv left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Rebase latest main branch instead of merging!

@jserv jserv left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jserv

This comment has been minimized.

@jserv

jserv commented Oct 22, 2026

Copy link
Copy Markdown
Contributor

@ga-1113 e40200c merges main into this branch. This project updates a pull request by rebasing onto the latest main and force-pushing to the same branch, never by merging main in (see "Pull requests" in CONTRIBUTING.md). That commit also fails scripts/git-commit-msg.sh: its subject is not git's own merge wording, so it gets no merge exemption, and its body is a single 147-character line where the limit is 72. The hooks make hooks installs would have refused it at commit time, so run make hooks once in this clone first. Then run git rebase onto the latest upstream main, which replays your three commits and drops the merge, resolve the interview-import conflicts there, and force-push. The rebase also clears the failing cargo-audit job, since main already carries that fix.

@ga-1113 ga-1113 changed the title Link original LeetCode problems from reports Link reports to original LeetCode problems Oct 22, 2026
@ga-1113
ga-1113 force-pushed the issue-152-leetcode-report-link branch from e40200c to 97fda76 Compare October 22, 2026 08:36
Comment thread web/render.js
/// Find the published problem for a completed scenario. The map's key is the
/// LeetCode URL slug; scenario page names and saved legacy ids both work here.
/// A malformed map entry cannot turn the fixed destination into another host.
export function originalProblemForPage(pages, page) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This puts the published title and LeetCode URL into Past attempts, the replay and the downloaded Markdown. docs/development.md says the opposite: "The title reaches the live interview page only: saved history, the downloaded report and the replay keep the scenario's." It also lists the only reasons web/problem-pages.json is fetched, and every completed report is now one more. Update that paragraph in this PR so the contract matches what ships.

@ga-1113
ga-1113 force-pushed the issue-152-leetcode-report-link branch from 97fda76 to 620efca Compare October 22, 2026 08:56

@jserv jserv left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Rebase latest main branch to pick up the CI fixes from #434.

Because readers cannot easily return to the original LeetCode problem
from a completed interview report, I include the original problem
link in completed reports, saved attempts, replays, and Markdown
exports so readers can revisit the source while reviewing their
answers.
@ga-1113
ga-1113 force-pushed the issue-152-leetcode-report-link branch from 620efca to 84bd452 Compare October 23, 2026 05:52
@ga-1113

ga-1113 commented Oct 23, 2026

Copy link
Copy Markdown
Author

Rebased onto the latest main to include the CI fixes from #434 and resolved the conflict.

@jserv

jserv commented Oct 23, 2026

Copy link
Copy Markdown
Contributor

Rebased onto the latest main to include the CI fixes from #434 and resolved the conflict.

Don't leave messages like the above, as GitHub always tracks.

Comment thread web/app.js

function downloadSavedReport(attempt) {
async function downloadSavedReport(attempt) {
const problemPages = await loadPageMapForDownload();

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

downloadSavedReport now waits for loadPageMapForDownload before anything happens. If /problem-pages.json is slow or stalled, the button shows nothing and stays enabled for up to ten seconds. Every extra click starts another export, and all of them download once the map arrives or the time runs out. Ignore clicks (or disable the button) while an export is pending and reset that in finally; downloadReport in web/interview.js needs the same guard.

Comment thread web/replay.js
Comment on lines +517 to +522
void loadPageMap()
.then((pages) => {
if (selected === recordingId)
showOriginalProblem(nodes.report, pages, saved.problemId);
})
.catch(() => {});

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No browser test reaches this lookup, or the one renderReport in web/interview.js starts for the report shown right after an interview, which is the case #152 asks for. Only the Past attempts path is driven end to end, so the selected === recordingId guard and the immediate report's link could break with every test still passing. Add one test that finishes an interview and expects the link under the title, and one that opens a second recording before the first lookup settles and checks the first problem's link does not appear on it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add LeetCode problem reference to completed interview reports

2 participants