Commit graph

13 commits

Author SHA1 Message Date
Breadway
fe2724220a Fix clippy warnings and a stale test assertion surfaced by check.yml
All checks were successful
check / check (push) Successful in 1m17s
check.yml runs clippy -D warnings and cargo test for the first time in
this repo's history, surfacing pre-existing lint debt across all four
workspace crates plus one stale test assertion (breadpad-shared's
Palette default-background test still expected bread-theme's old
#1e1e2e; the upstream design system moved to #0c0c0c a while back and
nothing caught the drift since tests never ran in CI).

All fixes are mechanical: needless returns/closures/borrows, manual
Default impls replaceable by #[derive], map_or -> is_some_and, manual
range checks -> RangeInclusive::contains, a non-idiomatic sort_by ->
sort_by_key, an overly complex inline type given an alias, and moving
a function that ended up defined after its own test module. The one
exception is NoteType::from_str, which clippy flags for shadowing
std::str::FromStr's name — left as `#[allow(...)]` with a comment
rather than renamed, since it has 30+ call sites across every crate
in the workspace and returns Self directly rather than Result.
2026-08-04 17:52:45 +08:00
Breadway
561dd46dcf Repoint bread-ecosystem git deps from dev to main branch
Some checks failed
dev release / build (push) Failing after 23s
2026-07-31 14:30:01 +08:00
Breadway
ae296c7154 breadman: rebuild settings as plain GTK4, fix AdwDialog sizing, present-ordering bug
The libadwaita-based settings screen (previous commit) had two real bugs a
closer look (and a screenshot from the real running app) caught:

- AdwSpinRow's internal GtkSpinButton has no width constraint of its own,
  so once the row was widened to 900px, the spin button stretched to fill
  it - the digits and +/- buttons ended up stranded behind a huge empty
  bordered box, the exact bug the design review flagged, just worse.
- bread-theme's shared `entry, spinbutton` rule outlines every field with
  an always-visible @overlay border, which on a light-cream overlay colour
  reads as a stark white outline against the dark theme.

Rather than keep fighting libadwaita's internal row/spin-button opinions
(there's no supported way to reach in and constrain them), settings.rs is
now plain GTK4 mirroring bos-settings' own Row.svelte/NumberField.svelte/
TextField.svelte design exactly: same tokens (12/16px row padding, ch-width
inputs, transparent-at-rest border, accent border only on focus), built on
a plain `list.boxed-list` for the native rounded-corner-run + divider
styling. Full control over sizing, no internal widget to hunt for.

Also fixed a real ordering bug in the editor AdwDialog conversion:
`open_editor` used to call `dialog.present()` internally before returning,
so callers that connected `dialog.connect_map` afterward (screenshot mode)
missed the signal entirely - it can fire synchronously inside `present`.
Presentation now happens at each call site, after wiring `connect_map`.
Also gave the dialog's content an explicit height/vexpand + min-content-
height, since the ScrolledWindow had none and the whole dialog was
collapsing to just its header bar.

breadpad-shared's bread-theme dependency also gets fixed here: it was
still pinned to an old GitHub-mirror tag (v0.2.8) while breadman pinned
the same crate to git.breadway.dev's dev branch - two different copies of
bread-theme compiled into the same binary, so breadman's actual runtime
CSS (built through breadpad_shared::theme) never saw any of the shared
stylesheet fixes above regardless of what breadman's own direct
dependency resolved to.
2026-07-31 08:58:36 +08:00
Breadway
26cb31354f breadpad: fix reminder alert, snooze popover, and compose popup
Reminder alert:
- Dismiss now matches Snooze's full-opacity text color instead of 0.6
  alpha, which read as a disabled button.
- Button row inset brought to 20px to match the header/body zone above
  it (was 16px, visible as a step across the divider).

Snooze popover:
- Options are left-aligned (each button's label now sets its own
  xalign) and span the full row width instead of centering as a
  ragged-left stack of labels.
- Added a hairline divider between options so the list reads as
  distinct rows even in the popover's static/non-hover state.
- Added a "Custom…" option that reveals a free-form time entry,
  reusing the same rule-based time parsing breadman's dialogs use,
  instead of only offering the three fixed presets.
- Popover now matches the reminder card's flat-bordered elevation
  (no arrow, 1px border, no shadow) instead of GTK's default
  arrow+drop-shadow popover chrome.

Compose popup: dropped the bare accent-teal checkmark submit button
(same colour as the selected type pill, unlabeled) in favor of a
"Press Enter to add" hint, since the popup already grabs focus and is
keyboard-driven. Also made the entry's CSS padding uniform (14px on
all sides, was 12px/16px).
2026-07-31 07:21:13 +08:00
Breadway
de7965edae breadman: address design-review findings (settings, note list, editor)
Settings screen:
- Widen the AdwClamp to 900px, left-aligned to the note-list gutter,
  instead of PreferencesPage's own ~600px clamp that made the screen
  read as a narrower, bolted-on app.
- Remove the floating Save button; every control now applies instantly
  (switches/combo/spin on change, entry rows via show_apply_button),
  matching what AdwSwitchRow's own design language already implies.
- Replace ActionRow+suffix-Entry with real AdwEntryRow/AdwPasswordEntryRow
  so fields are row-width instead of sized by leftover label space.
- Default type now uses the same pill-row widget as the New Note dialog
  and editor, instead of a fourth type-picker variant.
- Local Classifier group description notes the paths are shared with
  breadpad.

Note list (All/Upcoming/Todo/Idea/Note/Question):
- Replaced the two-line card (huge dead gap between title and actions)
  with Archive's tighter single-line row layout, shared via the new
  views::row module. Unifies the edit affordance (pencil in both active
  and archive rows) and drops the type badge in views already filtered
  to one type.
- Type badges now tint per-type (matching the existing note-card-{type}
  accent-bar colors) instead of one flat cream fill for every type.
- Empty states are centered with type-specific copy and a "+ New X"
  action instead of top-anchored generic text.
- Search bar is now scoped to note-list views (was rendering uselessly
  on Settings/Errors).
- Archive sort bug: it was sorting by `created` while displaying
  `completed` ("done {date}"), which is why rows could appear out of
  order. Now sorts by `completed`.
- Sidebar and row-action icons are now real GTK symbolic icons instead
  of a mix of emoji, Unicode glyphs, and thin monochrome characters.

Editor: converted from a bare GtkPopover (no scrim, no title, anchored
wherever the triggering button happened to be) to an AdwDialog with
AdwEntryRow fields, a shared header bar, and copy/placeholders unified
with the New Note dialog. Delete uses destructive-action styling.

Also: destructive-action buttons (breadman's row/editor delete, and
breadpad-shared's .danger-btn) now use a hardcoded red instead of
pywal's @red - a blue-toned wallpaper's "red" palette slot can itself
render blue, which made delete indistinguishable from confirm/accent
buttons regardless of which CSS class was already applied.
2026-07-31 07:18:03 +08:00
Breadway
e0b55e1713 Bump bread-theme to v0.2.8 (live-reload fix)
Some checks failed
Mirror to GitHub / mirror (push) Successful in 2s
Build and publish package / package (push) Failing after 4m47s
2026-06-17 12:55:57 +08:00
Breadway
c30aa2497e Fix illegible text on light pywal palettes + hot-reload
Use bread-theme 0.2.7's luminance-picked ink (@on-*): type chips on @overlay and
selected sidebar rows / confirm buttons on @blue kept @fg or @bg, which vanished
when those slots came out light/dark. They now use @on-overlay / @on-accent.

Add breadpad_shared::theme::apply_live (wraps bread_theme::gtk::apply_app_css) so
breadpad and breadman recolour live on `bread-theme reload` and re-read the user's
style.css — replacing the build-once provider. bread-theme bumped to v0.2.7
(gtk feature).
2026-06-17 12:42:12 +08:00
Breadway
49f6966d9c theme: build on the shared bread-theme stylesheet
build_css() now starts from bread_theme::stylesheet(palette) and appends only
breadpad/breadman-specific components. This unifies fonts, palette, and generic
widgets with the rest of the ecosystem and fixes the colour mapping (overlay is
now color7, matching every other app, not color0). Bump bread-theme to v0.2.6.
2026-06-16 16:57:16 +08:00
Breadway
478d06a5d5 fix: skip ROCm EP registration when not available in ORT build
Some checks failed
release / build (push) Failing after 3s
Eliminates the spurious ERROR log from ORT when ROCm isn't compiled in.
Checks is_available() before attempting registration so the session
correctly falls back to CPU without noise.
2026-06-07 15:53:06 +08:00
Breadway
2987e0373e fix: switch bread-theme to git dep (v0.1.0) for CI 2026-06-06 23:26:54 +08:00
Breadway
9537a12537 Refactor theme onto bread-theme; add bakery.toml and release workflow
- breadpad-shared/Cargo.toml: depend on bread-theme (no gtk feature needed
  in the shared crate)
- breadpad-shared/src/theme.rs: re-export Palette and load_palette from
  bread-theme; retain all breadpad-specific CSS in build_css()
- bakery.toml: describes breadpad for bakery install
- release.yml: builds on hestia self-hosted runner, publishes binaries to
  dl.breadway.dev and GitHub Releases on v* tags
2026-06-06 22:31:38 +08:00
Breadway
c4626dd64d Prepare repo for GitHub publication
- Add MIT LICENSE file
- Expand .gitignore with standard Rust/Linux entries
- Remove dangling symlinks (breadmancli, breadpadcli) and dev scratchpad (svgs.txt) from git tracking
- Replace unsafe unwrap() calls with expect() in breadman CLI (guarded by prior filter)
2026-06-06 12:25:40 +08:00
Breadway
feefdb81b9 Committing before copilot touches this 2026-05-25 19:53:50 +08:00