undo a few changes#5
Open
Greensand321 wants to merge 223 commits into
Open
Conversation
Claude/review flowboard l qttz
Claude/review flowboard l qttz
Add Section 13 Roadway Plans checklist
Claude/review flowboard l qttz
…ually - Archive entire columns (with all their cards) via ⊡ button in column header - Archive individual cards via 📦 Archive button in card modal footer - Archive browser modal (📦 Archive in top nav) shows archived columns and cards with Restore and Delete actions per item - Restoring a column also clears archive flags on all cards within it - Archived items are fully filtered from the board, card counts, and stats - Archived columns are excluded from the card modal's column picker - All archive actions integrate with undo/redo stack https://claude.ai/code/session_01VxiEThbmeb8Y6ro3A68Mnd
…n-SVfAr Add archival feature to FlowBoard — archive columns and cards individ…
Replace flat lists with a horizontally scrollable row of column panels that use the same .col / .col-hdr / .col-body / .card CSS as the live board, making the archive immediately recognizable. - mkArchivePanel(): renders a column panel using the column's real PAL color and header style. Fully archived columns get an amber 🗄 Archived badge plus ↩ / × column-level actions. Context panels (active columns with individually archived cards) show the column name and count only. - mkArchiveCard(): renders a .card with the same border-left color, title, priority badge, tags, progress bar, and due-date badge as the live board. Appends ↩ Restore and 🗑 buttons. Restore is omitted for cards inside a fully archived column (whole-column restore is the right action there). - showArchiveModal(): builds the modal with DOM nodes directly (no HTML string), widens to min(92vw, 960px), and uses .group-cols for horizontal scroll. Panels sorted newest-archived first. Includes a legend row distinguishing the two panel types. Empty state preserved. https://claude.ai/code/session_01VxiEThbmeb8Y6ro3A68Mnd
…n-SVfAr Redesign archive modal to mirror the board's visual layout
Creates Section 60 Checklist.html from the section00-template, populated with all 60.001 required information items for Cover Drawing (30 items) and Right of Way Plan Drawings – General (42 items), with source bold formatting preserved via HTML strong tags. https://claude.ai/code/session_017f8GsiJFXxhAyvEViGmJxs
…klist-uF70W Add Section 60 Right Of Way Plans Checklist
Creates Section 50 Checklist.html from the section00-template, populated with all content from sections 50.001 General (1 item), 50.002 Required Information (26 items covering ESPCP cover drawing requirements), and 50.002 Additional Items (1 item noting optional delineation elements). https://claude.ai/code/session_017f8GsiJFXxhAyvEViGmJxs
…cklist-uF70W Add Section 50 Erosion, Sedimentation and Pollution Control Checklist
Replaces the one-line placeholder with a complete overview covering both tools: FlowBoard (features, sync, backups, themes) and the PPG compliance checklists (Sections 24, 50, 60). Includes a combined workflow showing how the two tools complement each other, a quick-start guide, and a clear statement of the target audience (GDOT civil engineers and consultants). https://claude.ai/code/session_017f8GsiJFXxhAyvEViGmJxs
…cklist-uF70W Rewrite README with full product marketing copy
Moves the uploaded demo images into assets/screenshots/ for clean repo organization and adds a two-column light/dark comparison table in the FlowBoard section of the README so visitors get an immediate visual of the tool. https://claude.ai/code/session_017f8GsiJFXxhAyvEViGmJxs
…cklist-uF70W Add FlowBoard screenshots and embed in README
Comprehensive engineer-facing spec covering all 9 pages/modals, data model, color palettes, animations, drag-and-drop mechanics, Firebase sync system, undo/redo, and implementation notes derived from the reference flowboard.html. https://claude.ai/code/session_01SXRYeiXpndK6y9y9Bo3Ls7
…mpt-Tw6gQ Add detailed FlowBoard website implementation prompt
…n00-template-to-section-50-checklist Add Section 50 ESPCP cover drawing checklist
Claude/eloquent babbage n zjiw
Setting a subtask due date activates auto-sync (card.dueAuto), making the card's due date track the earliest due date among incomplete checklist items. Manually editing the card's own due date deactivates auto-sync until a subtask due date is set again. Sync recomputes when items are checked/unchecked, removed, cleared in bulk, or when the card is marked done, clearing the card due date once no incomplete subtask has one. https://claude.ai/code/session_018VDyn2uBS2obJUMrjQNWGY
Auto-sync card due date with earliest incomplete subtask due date
Checking off/removing checklist items that triggered the new due-date auto-sync previously did a full renderCM() (rebuilding the whole card modal), causing a visible blink. Extract the due-date badge and deadline controls into _mkDueLabelHtml/_mkDueActionsHtml/ _mkDueCalHtml plus a refreshCMDue() that patches just those DOM nodes, and use it instead of a full re-render in toggleCMItem, removeCMItem, toggleAllItems, clearCompleted, and pickCalDay. https://claude.ai/code/session_018VDyn2uBS2obJUMrjQNWGY
Fix card modal flicker when due-date auto-sync changes card.due
Previously, once every incomplete subtask was checked off, the sync cleared card.due AND deactivated dueAuto. Unchecking an item with a due date afterward then had no effect until the user manually edited the due date (which reactivates dueAuto). Now dueAuto stays active in that case, so unchecking immediately resumes auto-sync. https://claude.ai/code/session_018VDyn2uBS2obJUMrjQNWGY
Fix due-date auto-sync not resuming after all items checked off
card.dueAuto is now recomputed fresh on every sync (true whenever any checklist item has a due date set, regardless of completion), instead of being a sticky flag that could get stuck false. This permanently fixes the case where checking off every due-dated item and then unchecking one didn't restore the card's due pill. When dueAuto is active and no incomplete item currently has a due date, the card modal now shows a "Due dates complete" badge instead of an empty header, and the deadline control becomes a read-only "synced" indicator (since the date is fully derived from checklist items in that state) rather than a date picker that would silently get overridden. Also run the sync once at board-load time and when opening a card, so any previously-stuck cards self-correct automatically. https://claude.ai/code/session_018VDyn2uBS2obJUMrjQNWGY
Self-heal due-date auto-sync and add "Due dates complete" status
Shows only cards that have a due date set on the card itself or on any checklist item. https://claude.ai/code/session_018VDyn2uBS2obJUMrjQNWGY
… enter/exit animations
… change Extends the filter-out delay to 300ms and uses the FLIP technique to smoothly slide remaining columns/groups into their new positions after items fade out, instead of snapping into place.
Claude/eloquent babbage n zjiw
…not the bottom Previously checking an item jumped it to the absolute end of the list, below all other completed items. Now it lands right after the last incomplete item, so the most recently completed items surface at the top of the done section for easy review. Unchecking still moves an item to the bottom of the incomplete block, using the same boundary calculation.
The card modal stops propagation on its own clicks, so the old bubble-phase document listener never saw clicks inside the modal and the sort menu stayed open. Move dismissal to the capture phase (fires before the modal swallows the event), add scroll/resize/Escape dismissal, exclude the trigger button and the menu itself, and properly remove all listeners on close to stop the leak.
Claude/eloquent babbage n zjiw
… time - notify() default duration 2600ms -> 7800ms (triple), and now clears any pending hide-timeout on a new call so a fast second toast isn't cut short by the first one's timer. - localStorage save failures now distinguish quota-exceeded vs blocked storage (private/incognito) vs unknown error, and report actual board/ backup/auto-snap sizes so the message reflects what's really happening instead of a generic "storage may be full" guess. - Firebase per-edit write failures were previously silent to the user (only the sync badge changed color, error logged to console). They now surface a toast with the Firebase error code/message and a note that the local copy is safe, distinguishing offline vs permission-denied vs other errors.
Extracts Flowboard's local+cloud persistence architecture (autosave, undo/redo with crash recovery, manual + automatic snapshots, export/ import, diff viewer, whole-document cloud sync with a heuristic safety gate) into a config-driven module that doesn't assume any particular state shape or a global named S. A minimal demo task list proves the module end-to-end; the DSK_CONFIG block at the top is the only section meant to change when adopting this in another program. Also fixes a known inefficiency from the original Flowboard implementation: auto-snapshots are now stored as individually keyed Firebase children instead of one whole-array overwrite per snapshot. Includes a prominent integration warning listing 8 conditions (existing undo system, non-matching state shape, partial-update cloud writers, regulated data, multi-writer concurrency, existing soft-delete/ versioning, different storage-budget assumptions, non-function-based mutations) under which an integrator should flag the conflict to a human instead of silently implementing.
Claude/eloquent babbage n zjiw
…al backup interface Replaces the earlier minimal mockup with the real thing: the Backup & Restore modal, auto/manual snapshot lists, Compare/diff viewer, and their CSS (buttons, .bak-item/.auto-bak-item, .diff-* classes, .overlay/.modal) are cloned from Flowboard's showBackupModal()/ showDiffPicker()/showSnapshotDiff(), not reimagined. Theme is fixed to Flowboard's "pearl" light variables, no dark option, per request. The DSK module underneath is unchanged in behavior; only its UI-facing surface (setModal/closeModal, the modal HTML builders, triggerBadge, diffExpand) was added so the generic DSK_CONFIG adapters now drive the same interface instead of a scaled-down demo panel. Flowboard's USB-drive section is intentionally omitted (hardware file-access feature out of scope for this generic kit) and noted as such in a comment rather than silently dropped.
Rebuild Data Safety Kit UI as a light-theme clone of Flowboard's actu…
…dd drag edge auto-scroll Four fixes from the audited bug list, in order: 1. Card modals in light themes now tint with the card color (color-mix 8% toward white) instead of staying flat white — the tint was previously applied only when !isLight(), in both renderCM and setCMColor; extracted shared _cmModalBg() helper. 2. Checklist truncation preview is now robust: the hover handler moved from the text span to the whole row (the chevron/x/badge zone where the ellipsis visually sits previously had no handler at all), and the truncation test gained a sub-pixel Range measurement to catch text overflowing by less than 1px, which the integer scrollWidth comparison misses. 3. Description box gets a custom 34px grab handle (double the native ~17px resize corner), always visible, pointer-event based so it works with touch, persisting height through the existing EC.descH path. The native resize:vertical corner remains as a fallback. 4. Dragging a column or card near the edge of a scrollable container now auto-scrolls it (group row horizontally, limited column bodies and the board vertically) via a rAF loop that keeps scrolling while the pointer holds still in the 70px edge zone, refreshing the drop indicator as content moves under the pointer. Previously a drag could never reach an off-screen destination.
… scale setting Due dates: when a card's due is auto-synced from checklist items, the header now shows a ✕ button that clears every item's due date in one click (guarded by confirm + a pre-action auto-snapshot). Previously a synced due date could only be removed by opening each item's calendar individually. Card due is cleared explicitly since the sync leaves the stale derived date in place once no item has a due. UI scale: new "UI Scale" section in the settings panel with −/+ stepping (60–150%) and an Auto mode that seeds the scale from the screen width (0.85–1.1 across <1300 to ≥2400 px). Manual choice persists in localStorage — deliberately per-device, not in synced prefs, since the right scale differs between monitors (the reported home-vs-work problem). Applied via body zoom at boot.
…phan purge Option B storage/sync stopgap: - CRITICAL correctness fix: a failed local (localStorage) write no longer falls through to push to the cloud. Previously save() bumped lastModified and ran the Firebase set() even when the local write threw quota-exceeded — leaving the device's disk behind the cloud and silently desyncing it on the next reload/tab-discard. This is the mechanism behind "sync stopped being reliable after switching devices." Now: on unrecoverable local failure the timestamp is reverted, the sync badge shows error, and nothing is pushed, keeping the cloud consistent with what the device can actually persist. - Auto-cull safety valve: on a quota error, reclaim space (purge orphaned auto-snap stores, then trim every board's auto-snaps to the 3 newest) and retry the write once before surfacing a hard error. Manual snapshots are never touched. - Honest usage gauge: the "storage nearly full" warning now measures TRUE origin-wide localStorage usage across all keys, not just the current board's 3 keys — so it can no longer stay green while other boards' backups fill the shared ~5MB quota. - Orphan purge on load: auto-snapshot stores for boards no longer in the keys list are removed at startup (disposable auto-snaps only, keyed by share-key; user-created manual snapshots are never auto-deleted). Verified headlessly: failed write reverts timestamp + skips cloud push + shows error badge; successful auto-cull retry saves and notifies; gauge counts other boards; orphan purge removes dead stores and keeps live ones.
Claude/eloquent babbage n zjiw
…a real storage usage bar
Implements items 1-3 from the storage/sync report:
1. Persistent save-error banner: local-save failures now show a
body-level banner (survives full board re-renders, unlike a toast)
with real action buttons (Export Backup Now / Open Backups) instead
of prose telling the user where to go. Auto-hides the next time a
save succeeds; auto-dismissible manually. Quota failures also
invalidate the cached capacity probe, since a failure despite a
cached "plenty of room" reading means that reading was wrong.
2. Backups button now reflects real storage state: green/amber/red
(70%/90% of measured ceiling) plus a red dot badge when an
auto-cull has run and not yet been acknowledged. A small persisted
cull log (fb4_cull_log/fb4_cull_ack, capped at 10 entries) drives
both the badge and a banner inside the Backup modal itself
("Storage auto-cleanup ran on <date> — N old auto-snapshots
removed"). Opening the modal acknowledges it and clears the red
state.
3. Real storage usage bar in the Backup modal, backed by an empirical
capacity probe (_probeStorageCapacity): binary-search-writes a
throwaway key to find this browser/profile's actual localStorage
ceiling instead of guessing a per-browser constant that drifts out
of date across versions. Cached (fb4_cap_probe), runs lazily off
the initial render tick on first Backup-modal open so it can't
block the UI, with a manual "Recalculate" action. _storageStats()
is now the single source of truth for usage/ceiling/percentage,
replacing the old hardcoded 4MB threshold that was duplicated
across the save() warning, so the toast, button color, and bar can
no longer disagree with each other.
Verified headlessly: probe finds a plausible ceiling and cleans up its
own temp key; storage bar renders and Recalculate works; cull event
turns the button red with a badge and the modal shows the banner;
opening the modal acknowledges and clears both; the error banner
appears with working action buttons, survives a full render() wipe,
and hides itself on the next successful save.
Note: item 4 from the report (orphan auto-snapshot purge currently
runs silently and irreversibly on every boot) is NOT addressed here —
scoped out of this round per explicit instruction, but still an open
risk flagged for a follow-up.
Add persistent save-error banner, backups-button warning states, and …
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
undo some of the changes in the branch