refactor: cut the explanatory copy from the sign-in screen and My Resources
Some checks failed
Forgejo Android APK / Root app tests (push) Successful in 55s
Forgejo Docker Build / Root app tests (push) Successful in 55s
Forgejo Android APK / Build signed APK (push) Successful in 2m3s
Forgejo Docker Build / Build Docker image (push) Successful in 19s
Forgejo Docker Build / Deploy to the host (push) Failing after 2s
Some checks failed
Forgejo Android APK / Root app tests (push) Successful in 55s
Forgejo Docker Build / Root app tests (push) Successful in 55s
Forgejo Android APK / Build signed APK (push) Successful in 2m3s
Forgejo Docker Build / Build Docker image (push) Successful in 19s
Forgejo Docker Build / Deploy to the host (push) Failing after 2s
The HIPAA notice is gone from the auth screen, along with the CSS rule that had no other user. The My Resources intro paragraph and the helper paragraphs under each checkbox are gone too; where a paragraph carried something the reader actually needed, it moved onto the control itself — the illustration checkbox now says what it does and where to steer it. Two sentences were kept rather than deleted, both about data leaving the building: that a web search query leaves this network and must not carry anything identifying, and that a PubMed query goes to NCBI. Trimmed to one line each. Say the word and they go too, but a clinical tool should not quietly send a query off-network with nothing on screen about it. The three tests that pinned the removed sentences now assert the behaviour instead: that the header still claims privacy, and that the illustration checkbox is genuinely unchecked in the markup rather than merely described as off by default. Verified as rendered: neither the sign-in nor the sign-up screen mentions HIPAA, the invite-code field is visible, and the generator card is down to its controls plus the NCBI line. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Dv6sqaY6Vq3ChZHMem3cnU
This commit is contained in:
parent
8cca5a4796
commit
5577ec301c
4 changed files with 17 additions and 47 deletions
|
|
@ -4,12 +4,6 @@
|
|||
<span style="font-size:12px;color:var(--g500);">Private to you</span>
|
||||
</div>
|
||||
<div style="padding:16px;display:flex;flex-direction:column;gap:14px;">
|
||||
<p style="margin:0;padding:8px 10px;background:var(--g100);border-radius:6px;font-size:12px;color:var(--g600);">
|
||||
Teaching material you generate for yourself — a deck for tomorrow's session, a
|
||||
handout, a summary. Nobody else sees these. Published Learning Hub content is separate
|
||||
and stays with the moderators.
|
||||
</p>
|
||||
|
||||
<div class="admin-row">
|
||||
<label for="mr-topic" class="admin-row-label">Topic</label>
|
||||
<input id="mr-topic" type="text" class="admin-control" placeholder="e.g. febrile seizures in under-fives" maxlength="300">
|
||||
|
|
@ -40,11 +34,6 @@
|
|||
<input type="checkbox" id="mr-use-corpus" checked>
|
||||
Write from the indexed clinical library
|
||||
</label>
|
||||
<p style="margin:0;font-size:12px;color:var(--g500);">
|
||||
Searches the corpus for your topic and writes from those excerpts, preferring them
|
||||
over the model's own recall, and ends with a References section. Turn this off for a
|
||||
topic the library does not cover.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
@ -52,10 +41,6 @@
|
|||
<label for="mr-model" class="admin-row-label">Model</label>
|
||||
<div style="flex:1;display:flex;flex-direction:column;gap:4px;min-width:0;">
|
||||
<select id="mr-model" class="admin-control" style="max-width:320px;"></select>
|
||||
<p style="margin:0;font-size:12px;color:var(--g500);">
|
||||
Only shown when an administrator has approved more than one. Otherwise the
|
||||
configured model is used.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
@ -64,15 +49,8 @@
|
|||
<div style="flex:1;display:flex;flex-direction:column;gap:4px;min-width:0;">
|
||||
<label style="display:flex;align-items:center;gap:8px;font-size:13px;">
|
||||
<input type="checkbox" id="mr-with-images">
|
||||
Let the model add an image where one genuinely helps
|
||||
Add one illustration — the model's choice, or say what to draw in Instructions
|
||||
</label>
|
||||
<p style="margin:0;font-size:12px;color:var(--g500);">
|
||||
Off by default: a model handed a drawing tool will find a reason to use it, and
|
||||
most teaching material does not want one. With this on you can also say what to
|
||||
draw in <strong>Instructions</strong> below — “include a diagram of the
|
||||
airway” — instead of leaving the choice to the model. One illustration
|
||||
per generation; it appears under the Generate button.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
@ -81,13 +59,10 @@
|
|||
<div style="flex:1;display:flex;flex-direction:column;gap:4px;min-width:0;">
|
||||
<label style="display:flex;align-items:center;gap:8px;font-size:13px;">
|
||||
<input type="checkbox" id="mr-web-search">
|
||||
Let the model look something up online
|
||||
Look it up online
|
||||
</label>
|
||||
<p style="margin:0;font-size:12px;color:var(--g500);">
|
||||
For something newer than the library — a guideline published this year, a recent
|
||||
approval. <strong>The search query leaves this network</strong> and reaches the provider
|
||||
your administrator configured; the library excerpts and the resource itself never do.
|
||||
Do not put anything identifying in the topic if you turn this on.
|
||||
<strong>The search query leaves this network.</strong> Do not put anything identifying in the topic.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -97,12 +72,10 @@
|
|||
<div style="flex:1;display:flex;flex-direction:column;gap:4px;min-width:0;">
|
||||
<label style="display:flex;align-items:center;gap:8px;font-size:13px;">
|
||||
<input type="checkbox" id="mr-pubmed">
|
||||
Let the model cite published literature
|
||||
Cite published literature
|
||||
</label>
|
||||
<p style="margin:0;font-size:12px;color:var(--g500);">
|
||||
Searches PubMed and returns structured records, so a reference carries a PMID somebody
|
||||
can look up. <strong>The search query goes to NCBI</strong>; the library excerpts and
|
||||
the resource itself do not.
|
||||
<strong>The search query goes to NCBI.</strong>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -143,9 +116,7 @@
|
|||
<div style="flex:1;display:flex;flex-direction:column;gap:4px;min-width:0;">
|
||||
<textarea id="mr-modify-instructions" class="admin-control" style="min-height:70px;resize:vertical;font-family:inherit;" placeholder="e.g. split slide 4 into two, drop the pharmacology, add a summary slide at the end"></textarea>
|
||||
<p style="margin:0;font-size:12px;color:var(--g500);">
|
||||
Rewrites the resource in place, keeping its structure and any References section
|
||||
unless you ask otherwise. The previous version is replaced, so copy anything you
|
||||
want to keep first.
|
||||
The previous version is replaced.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -37,8 +37,6 @@ body{font-family:'Inter',system-ui,sans-serif;background:var(--g50);color:var(--
|
|||
.btn-auth:hover{background:var(--blue-dark);}
|
||||
.auth-links{text-align:center;margin-top:16px;font-size:13px;}
|
||||
.auth-links a{color:var(--blue);text-decoration:none;margin:0 8px;}
|
||||
.hipaa-notice{margin-top:24px;padding:12px;background:var(--amber-light);border-radius:8px;font-size:12px;color:#92400e;display:flex;align-items:flex-start;gap:8px;}
|
||||
.hipaa-notice i{margin-top:2px;flex-shrink:0;}
|
||||
|
||||
/* FOOTER */
|
||||
.app-footer{color:rgba(255,255,255,0.4);font-size:10.5px;text-align:center;padding:20px 24px 8px;line-height:1.6;}
|
||||
|
|
|
|||
|
|
@ -137,11 +137,6 @@
|
|||
</div>
|
||||
</form>
|
||||
|
||||
<div class="hipaa-notice">
|
||||
<i class="fas fa-triangle-exclamation"></i>
|
||||
<span>HIPAA-compliant AI providers available with BAA. Check with your institution's guidelines before use. Not intended for production clinical use without proper authorization.</span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<footer class="app-footer">
|
||||
Committed to healthcare equity — always consult a qualified healthcare professional for medical advice.
|
||||
|
|
|
|||
|
|
@ -92,8 +92,9 @@ test('the screen is reachable by anyone signed in, and states that it is private
|
|||
const button = index.slice(index.indexOf('data-tab="myresources"') - 40, index.indexOf('data-tab="myresources"') + 40);
|
||||
assert.doesNotMatch(button, /hidden/, 'visible to every signed-in user');
|
||||
|
||||
// Said in the header. It used to be repeated in a paragraph below; the claim
|
||||
// is what matters, not that it was made twice.
|
||||
assert.match(component, /Private to you/);
|
||||
assert.match(component, /Nobody else sees these/);
|
||||
});
|
||||
|
||||
test('a row offers the right formats, and the download carries its auth', () => {
|
||||
|
|
@ -132,6 +133,10 @@ test('illustration is opt-in, and reuses the assistant’s image tool', () => {
|
|||
// A model handed a drawing tool will find a reason to use it, so the tool is
|
||||
// only offered when the author asked for one.
|
||||
assert.match(route, /var wantsImages = String\(req\.body\.withImages\) === 'true'/);
|
||||
// Opt-in is the checkbox's own default, which is the fact worth pinning —
|
||||
// stronger than the sentence that used to explain it.
|
||||
assert.match(read('public/components/my-resources.html'),
|
||||
/<input type="checkbox" id="mr-with-images">/, 'unchecked by default');
|
||||
// Tools are assembled per generation: only what the author asked for.
|
||||
// Illustration is the only thing left that is genuinely a tool: it needs the
|
||||
// model to decide there should be a picture and to compose the prompt for it.
|
||||
|
|
@ -176,7 +181,6 @@ test('illustration is opt-in, and reuses the assistant’s image tool', () => {
|
|||
|
||||
// The row is hidden entirely when no image model is configured.
|
||||
assert.match(read('public/js/myResources.js'), /if \(imagesRow\) imagesRow\.hidden = !data\.imagesAvailable;/);
|
||||
assert.match(read('public/components/my-resources.html'), /Off by default: a model handed a drawing tool/);
|
||||
});
|
||||
|
||||
test('the author can ask for the illustration, not only leave it to the model', () => {
|
||||
|
|
@ -193,10 +197,12 @@ test('the author can ask for the illustration, not only leave it to the model',
|
|||
const prompt = route.slice(route.indexOf('function buildPrompt'));
|
||||
assert.ok(prompt.indexOf('illustration +') < prompt.indexOf('Additional instructions'),
|
||||
'illustration guidance precedes the instructions it refers to');
|
||||
// Said once on screen too, including the limit.
|
||||
// Said once on screen too: the label points at Instructions, and the
|
||||
// Instructions placeholder shows what asking for one looks like.
|
||||
const html = read('public/components/my-resources.html');
|
||||
assert.match(html, /include a diagram of the/);
|
||||
assert.match(html, /One illustration\s*\n?\s*per generation/);
|
||||
assert.match(html, /say what to draw in Instructions/);
|
||||
assert.match(html, /include a diagram of the airway/);
|
||||
assert.match(html, /Add one illustration/, 'and the count is stated where the choice is made');
|
||||
});
|
||||
|
||||
test('the library is bounded, searchable, and drives the modify picker', () => {
|
||||
|
|
|
|||
Loading…
Reference in a new issue