Skip to content

UI/UX polish, planned by Fable, implemented based on FAIM+SCIP dependency graph tooling#27

Closed
0xC0FEBABE wants to merge 7 commits into
mainfrom
feature/faim-scip-deps
Closed

UI/UX polish, planned by Fable, implemented based on FAIM+SCIP dependency graph tooling#27
0xC0FEBABE wants to merge 7 commits into
mainfrom
feature/faim-scip-deps

Conversation

@0xC0FEBABE

Copy link
Copy Markdown
Collaborator

This branch delivers the first UI/UX cleanup batch from reports/ui-ux-assessment.md, plus supporting FAIM dependency-graph tooling.

UI/UX quick wins

Implemented the small visual/usability fixes from T1–T6:

  • Improved dashboard quick-stat hierarchy and removed hover states from non-clickable cards.
  • Cleaned up user-facing wording:
    • “Kill poll” → “Cancel poll”
    • clearer voting-panel collapse text
    • phase labels now read like Step 2/3 · Ordering
  • Simplified poll/timer duration controls:
    • replaced huge duration lists with practical presets
    • added bounded numeric input validation for manual minutes
  • Removed the Google Material Symbols font request and replaced the only glyph usage with inline SVG.
  • Reduced background watermark opacity to avoid competing with content.

Modal and confirmation improvements

Implemented T7 + T10:

  • Added shared components/ui/ConfirmDialog.tsx.
  • Replaced window.confirm flows with accessible modal confirmations.
  • Improved ui/Modal.tsx with:
    • Escape handling
    • focus restore
    • initial focus
    • focus trap
    • body scroll lock

This improves destructive/admin flows without adding a new dependency.

UI primitive adoption and styling consistency

Implemented T8 + T9:

  • Standardized primitive radius defaults:
    • Button, Input, Selectrounded-lg
    • Cardrounded-2xl
  • Added shared sectionTitleClass in ui/Section.tsx.
  • Removed arbitrary radius/tracking classes from key dashboard/rail UI.
  • Converted main lunch-flow views and shared controls to existing primitives:
    • PollIdleView
    • PollActiveView
    • PollTiedView
    • OrdersRail
    • FoodSelectionActiveView
    • FoodSelectionOrderingView
    • FoodSelectionOvertimeView
    • FoodSelectionCompletedView
    • FoodDeliveryView
    • Header
    • TimerActionHeader
    • MinutesActionDropdown
    • MealOnboardingDialog
    • FoodSelectionAbortControl

Native checkboxes remain native; no checkbox primitive was added.

FAIM dependency graph support

Added project support for refreshing FAIM import/dependency facts from SCIP:

  • Added @sourcegraph/scip-typescript.
  • Added pnpm faim:deps.
  • Added scripts/faim-scip-deps.mjs.
  • Ignored generated SCIP artifacts:
    • index.scip
    • scip-deps*.jsonl
  • Refreshed .faim/derived/* dependency facts.

Documentation

  • Added/updated reports/ui-ux-assessment.md with completed task status through T10.
  • Note: reports/ is ignored by default, so this file was force-added because it is the assessment source for this batch.

Validation run

  • pnpm typecheck
  • pnpm lint ✅ no errors; existing warning baseline remains
  • Focused client tests across changed UI flows ✅
  • faim validate
  • faim status ✅ no stale facts, no schema errors, no violations

Commit list

  • e361af0 feat(faim): machine-derive dependency graph from SCIP index
  • 8ce90cf feat(ui): batch-1 UX quick wins (T1-T6)
  • 5565fd0 chore(faim): refresh stale test-file import facts
  • 6a9979b chore(faim): reconcile dependency graph after merging main
  • be181e0 Improve modal confirmations
  • `530d66c Unify UI primitives

0xC0FEBABE and others added 7 commits July 6, 2026 13:56
Replace the hand-recorded module dependency facts with a mechanically
derived graph from a scip-typescript index: 912 source-tracked facts
(262 entities, 916 edges), enabling trustworthy impact/deps/reaches
blast-radius queries.

- add `pnpm faim:deps` (scripts/faim-scip-deps.mjs): index -> scan ->
  filter generated/ -> import --replace; idempotent
- add @sourcegraph/scip-typescript devDep
- gitignore index.scip (40MB, regenerated) and scip-deps*.jsonl
- backfill --files provenance on the remaining hand-recorded facts
  (12 entities + 14 endpoints); untracked 83 -> 1 (faim self-fact only)

faim state: 0 stale, 0 schema errors, 0 violations, validate SUCCESS.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Quick Stats: emphasize values over labels, drop dead hover (T1)
- Wording: "Cancel poll", "Hide voting panel", named phase steps (T2)
- Poll timer: 4 presets + validated number input; bounds-check
  (1-720, integer) before hitting the API instead of sending NaN (T3)
- Poll duration: 10 presets instead of 144 generated options (T4)
- Drop Material Symbols web font; inline the one glyph as SVG (T5)
- Tone background watermark opacity 20% -> 8% (T6)

Also loosen OrdersRail isPhase3Due to match the "3/3" phase fraction
rather than the exact label string, so phase wording can change freely.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- drop obsolete office-poll-schedule -> src/lib/types dep edge
- rehash 8 unchanged import-graph facts after source byte changes

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- refresh scip-derived import graph via `pnpm faim:deps` (914 facts re-imported)
- rehash 20 unchanged service-level dep facts for poll/pollCreation/
  officePollSchedule (main changed logic, not their import edges)

faim validate: clean (0 stale, 0 violations).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@0xC0FEBABE 0xC0FEBABE closed this Jul 23, 2026
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.

1 participant