Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
.git
.github
.lake
.claude
node_modules
env
__pycache__
*.pyc
*.egg-info
ui
agents
docs
draft-hint
README.md
LICENSE
181 changes: 27 additions & 154 deletions blueprint/src/annotations.css
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
/* ── Annotation / Comment System ── */

/* Indicator icon on each annotatable element */
.annotation-indicator {
display: inline-flex;
align-items: center;
Expand Down Expand Up @@ -35,15 +34,6 @@
text-align: center;
}

/* Paragraph-level indicator (absolutely positioned) */
.ann-indicator-float {
position: absolute;
top: 2px;
right: -30px;
z-index: 10;
}

/* Highlight for elements that have annotations */
.has-annotations {
border-left: 3px solid #E69F00 !important;
}
Expand All @@ -64,7 +54,6 @@
display: block;
}

/* Panel header */
.ann-panel-header {
display: flex;
justify-content: space-between;
Expand Down Expand Up @@ -103,10 +92,6 @@
border: 1px solid #eee;
border-radius: 3px;
}
.ann-entry.resolved {
opacity: 0.55;
background: #f0f0f0;
}
.ann-entry-header {
display: flex;
justify-content: space-between;
Expand All @@ -127,30 +112,15 @@
white-space: pre-wrap;
word-break: break-word;
}
.ann-actions {
display: flex;
gap: 8px;
margin-top: 6px;
}
.ann-actions button {
font-size: 0.72rem;
padding: 1px 6px;
border: 1px solid #ccc;
border-radius: 2px;
background: #fff;
color: #666;
cursor: pointer;
}
.ann-actions button:hover {
background: #eee;
color: #333;
}
.ann-actions .ann-resolve-btn.is-resolved {
color: #28a745;
border-color: #28a745;

/* Topic badge */
.ann-topic-badge {
font-size: 0.7rem;
font-weight: 700;
text-transform: uppercase;
margin-right: 4px;
}

/* Empty state */
.ann-empty {
color: #999;
font-style: italic;
Expand All @@ -172,7 +142,7 @@
.ann-input-row label {
font-size: 0.78rem;
color: #666;
min-width: 40px;
min-width: 50px;
}
.ann-author-input {
flex: 1;
Expand All @@ -181,6 +151,13 @@
border-radius: 3px;
font-size: 0.82rem;
}
.ann-comment-topic {
flex: 1;
padding: 3px 8px;
border: 1px solid #ccc;
border-radius: 3px;
font-size: 0.82rem;
}
.ann-text-input {
width: 100%;
min-height: 50px;
Expand All @@ -205,140 +182,36 @@
.ann-submit-btn:hover {
background: #cc8c00;
}

/* Edit mode */
.ann-edit-textarea {
width: 100%;
min-height: 40px;
padding: 4px 6px;
border: 1px solid #E69F00;
border-radius: 3px;
font-size: 0.84rem;
font-family: inherit;
resize: vertical;
box-sizing: border-box;
}
.ann-edit-actions {
display: flex;
gap: 6px;
margin-top: 4px;
}
.ann-edit-actions button {
font-size: 0.75rem;
padding: 2px 10px;
border-radius: 2px;
cursor: pointer;
}
.ann-save-btn {
background: #E69F00;
color: #fff;
border: 1px solid #E69F00;
}
.ann-cancel-btn {
background: #fff;
color: #666;
border: 1px solid #ccc;
.ann-submit-btn:disabled {
background: #ccc;
cursor: not-allowed;
}

/* ── Floating toolbar ── */
#annotation-toolbar {
position: fixed;
bottom: 1.2rem;
right: 1.2rem;
z-index: 9999;
display: flex;
flex-direction: column;
align-items: flex-end;
gap: 6px;
}
#annotation-toolbar .ann-toolbar-main {
display: flex;
align-items: center;
gap: 6px;
background: #fff;
border: 1px solid #ccc;
border-radius: 6px;
padding: 6px 12px;
box-shadow: 0 2px 8px rgba(0,0,0,0.12);
font-size: 0.82rem;
}
#annotation-toolbar .ann-toolbar-badge {
background: #E69F00;
color: #fff;
font-size: 0.72rem;
font-weight: 700;
padding: 1px 6px;
border-radius: 10px;
min-width: 18px;
text-align: center;
}
#annotation-toolbar button {
padding: 4px 10px;
font-size: 0.78rem;
border: 1px solid #ccc;
border-radius: 3px;
background: #fff;
color: #555;
cursor: pointer;
}
#annotation-toolbar button:hover {
background: #f0f0f0;
}
.ann-toolbar-options {
display: flex;
align-items: center;
gap: 6px;
/* Feedback message */
.ann-feedback {
display: none;
margin-top: 6px;
font-size: 0.78rem;
color: #666;
color: #cc0000;
}
.ann-toolbar-options input[type="checkbox"] {
margin: 0;
.ann-feedback:not(:empty) {
display: block;
}

/* ── Print styles ── */
@media print {
/* Hide interactive controls */
.annotation-indicator,
#annotation-toolbar,
.ann-actions,
.ann-input-area,
.ann-panel-close,
.ann-edit-actions {
.ann-feedback {
display: none !important;
}

/* Show annotation panels that have comments */
.annotation-panel.has-print-comments {
.annotation-panel.open {
display: block !important;
border: 1px solid #999;
border-left: 3px solid #E69F00;
page-break-inside: avoid;
background: #fafafa;
box-shadow: none;
}

/* Show resolved comments in print */
.ann-entry.resolved {
opacity: 1 !important;
display: block !important;
}

/* Print label for comment section */
.ann-print-label {
display: block;
font-weight: 700;
font-size: 0.8rem;
color: #666;
margin-bottom: 4px;
}

/* Hide in screen */
@media screen {
.ann-print-label { display: none; }
}
}

/* Screen-only: hide print label */
@media screen {
.ann-print-label { display: none; }
}
Loading
Loading