aboutsummaryrefslogtreecommitdiff
path: root/modules/dashboard-config.el
Commit message (Collapse)AuthorAgeFilesLines
* feat(term): replace vterm with ghostel as the terminal engineCraig Jennings11 hours1-1/+2
| | | | | | | | I swapped the terminal engine from vterm to ghostel (libghostty-vt) everywhere. term-config replaces vterm-config (the F12 terminal, the C-; x menu, tmux history capture), and ai-term replaces ai-vterm (the F9 Claude-agent launcher). ghostel renders the agent TUI without vterm's flicker under heavy streaming, and one engine now covers every terminal workflow. Two behavior changes fall out of the swap. F9 launches in a terminal frame now: ghostel renders in TTY frames, so the old GUI-only guard is gone. Terminal windows no longer dim when unfocused: ghostel resolves its palette into the native module per-terminal, so there's no per-window color hook to dim through the way vterm had. auto-dim drops its vterm color-advice path, the dashboard Terminal button launches ghostel, and the vterm and vterm-toggle packages are removed. The tmux pane-history and copy-mode machinery carried over unchanged. It keys on the pty tty, which ghostel exposes.
* fix(dashboard): exempt the banner buffer from auto-dimCraig Jennings10 days1-4/+9
| | | | | | | | The butterfly banner is a transparent PNG. On this X11 build Emacs composites image alpha against one background color and caches the flat pixmap. So when auto-dim remaps a non-selected dashboard's background to near-black, the cached image keeps its old composite and the transparent edges show as a lighter rectangle. I exempted the *dashboard* buffer from dimming through the fork's never-dim-buffer hook, so its background never shifts. Live alpha compositing would need a pgtk build, which is out because of its fractional-scaling input lag, and every theme-level workaround changes dimming for all buffers. Scoping the exemption to one short-lived buffer is the narrow fix. The trade is no focus cue when the dashboard is shown in a split. I also dropped the :mask heuristic prop from the prior banner commit. The PNG already carries a real alpha channel, so heuristic masking was the wrong tool. Once the background is stable, the native alpha over the theme background reads clean on its own. I added Normal/Boundary/Error tests for the predicate.
* feat(dashboard): render the butterfly banner with a transparency maskCraig Jennings11 days1-4/+10
| | | | | | The dashboard banner showed the butterfly PNG without its transparency, because the image descriptor was built before the mask props were set. I moved the banner setup (dashboard-startup-banner, dashboard-banner-logo-title) ahead of dashboard-setup-startup-hook and added dashboard-image-extra-props with :mask heuristic, so the mask is in place when the startup hook builds the buffer. If a *dashboard* buffer already exists I refresh it, so the change shows without a restart. I also re-encoded the PNG smaller and kept the previous encoding as M-x_butterfly.png.bak.
* docs(load-graph): classify UI and core-UX modulesCraig Jennings12 days1-1/+10
| | | | | | Fourth classification batch: the modules that shape the first interactive frame — ui-config, ui-theme, ui-navigation, font-config, selection-framework, modeline-config, mousetrap-mode, popper-config, dashboard-config, nerd-icons-config. I annotated each header, added a Batch 4 table to the inventory, and extended the validation allowlist. 33 of 102 modules are now classified. These mostly stay eager: each has a real first-frame reason (theme, font, modeline, completion stack, landing page). No new hidden dependencies. popper-config carries the spec's open question about its enabled/disabled state, noted for the deferral phase.
* refactor(linear): point config at the renamed pearl packageCraig Jennings12 days1-1/+1
| | | | | | The linear-emacs package was renamed to pearl (~/code/pearl, feature pearl, all symbols pearl-*). Swapped every linear-emacs-* reference to pearl-* across linear-config.el (the use-package form, :load-path, the 26 :commands, the api-key/default-team-id/org-file-path vars, and the lazy-key advice targets pearl--graphql-request-async and pearl-check-setup), the dashboard launcher, and the two test files. Kept the Linear-domain naming intact, since pearl is just a client for the Linear service: the C-; L prefix, the cj/linear-* wrapper helpers, the "Linear" dashboard label, the api.linear.app authinfo host, and the data/linear.org synced file are unchanged. Verified the wiring in a live daemon — pearl loads, the team id and org-file path apply, and the key advice installs on both entry points.
* feat(dashboard): add a Linear launcher and group the navigator by row sizesCraig Jennings13 days1-14/+26
| | | | | | I added a Linear entry to the launcher table, keyed l, with the nf-oct-issue_tracks octicon, opening the issue list via linear-emacs-list-issues. That makes 13 launchers, which no longer divides into the old rigid 4-per-row grid. So I replaced the fixed chunk-by-4 with an explicit cj/dashboard--row-sizes (4 4 3 2) and reordered the table so Telegram comes before Slack, putting Slack and Linear together on the last row. The button shape moved into cj/dashboard--navigator-button, shared by the grouped loop and a fallback row for any launchers the sizes don't cover. A test pins the row sizes to the launcher count so they can't drift.
* refactor(dashboard): derive the navigator and keybindings from one launcher ↵Craig Jennings14 days1-81/+50
| | | | | | | | table The 12 dashboard launchers were inlined twice (once as navigator icon buttons, once as dashboard-mode-map keybindings), so adding or reordering one meant editing both lists, and the icon-row order could drift from the key order. I pulled them into a single cj/dashboard--launchers table of (KEY ICON-FN ICON-NAME LABEL TOOLTIP ACTION) tuples. cj/dashboard--navigator-rows chunks it four per row into the navigator buttons, and cj/dashboard--bind-launchers binds each key to its action. The icons and the keys now come from one place, with no behavior change: same icons, labels, order, and keys, locked by tests.
* fix(dashboard): center the banner subtitle and color the navigator and itemsCraig Jennings14 days1-1/+1
| | | | | | The banner subtitle sat left of center because dashboard-banner-title-offset was 5, which over-shifts. I dropped it to 3, which lines the subtitle up under the banner image. The navigator and the recentf/project/bookmark list rendered in the default near-white. I set dashboard-items-face to steel+2 so they pick up a theme color, and the section headers stay blue via dashboard-heading. The navigator and the items share dashboard-items-face, because the navigator is drawn with a dashboard-items-face overlay that wins over its per-button dashboard-navigator face, so they take one color by design here.
* fix(dashboard): trim padding newlines and reset window-start on openCraig Jennings2026-05-201-6/+7
| | | | | | The dashboard often opened already scrolled: content sat partly above the visible window with empty lines stranded at the bottom. There were two causes. The startupify list inserted five padding newlines that pushed the content past one screenful, and cj/dashboard-only moved point to point-min without resetting window-start, so a previously-scrolled view leaked into the next display. I trimmed the padding to one newline after the banner title and one before the items, and added a set-window-start to point-min in cj/dashboard-only so the view always starts at the top. A characterization test locks the window-start reset.
* refactor(dashboard): regroup launcher icons into 4/4/4 by purposeCraig Jennings2026-05-141-33/+39
| | | | | | | | | | | | | | | | | | | | | | Telegram had landed alone on a third row of one icon, with the first two rows holding a mixed bag (Code next to Email next to Agenda next to Files next to Music; Feeds next to IRC next to Slack next to Flashcards next to Books next to Terminal). No category showed up grouped, and the asymmetry was bugging me every dashboard open. Regroup by what the icons actually do. Three rows of four: - Row 1 Work: Code / Files / Terminal / Agenda - Row 2 Read & Learn: Feeds / Books / Flashcards / Music - Row 3 Communication: Email / IRC / Slack / Telegram Reorder the `define-key' calls on `dashboard-mode-map' to mirror the row layout -- reading the keymap top-to-bottom now matches reading the icons left-to-right. Drive-by fix in the same commit: Music had an icon but no `dashboard-mode-map' keybinding (mouse-only). Bound to `m'.
* feat(telega-config): guard launcher with a helpful message when telega is ↵Craig Jennings2026-05-141-2/+2
| | | | | | | | | | | | | | | | | | | | missing Without the guard, both `C-; G' and the dashboard Telegram icon trigger telega's autoload stub directly. When the package isn't installed yet the user sees `Cannot open load file: telega' in `*Messages*' with no hint about what to do. Wrap the launcher in `cj/telega' that checks `featurep' / `locate-library' first. If telega is present, delegate to it. Otherwise signal a `user-error' pointing at `scripts/setup-telega.sh' and the manual `M-x package-install RET telega' fallback. Rebind `C-; G' and the dashboard "g" key + Telegram icon callback to the wrapper. Two new tests in `test-telega-config.el' cover the wrapper paths (absent -> user-error with the recovery hint; present -> delegates to `telega') alongside the updated binding assertion.
* feat(dashboard): add Telegram launcher to a new third rowCraig Jennings2026-05-131-1/+8
| | | | | | `dashboard-navigator-buttons' grows a Row 3 with a single Telegram entry (using the `nf-fa-telegram' icon, launching `telega'). The dashboard-mode-map gets a single-letter `g' shortcut to match the other launcher keys. Two follow-up TODOs filed under the parent telegram task: the TDLib docker setup script (so a fresh-clone install can boot telega without a system-wide TDLib build) and a dashboard-icon-balance pass (Row 3 with one entry is asymmetric; decide whether to leave it or reorganize).
* feat(dashboard): F1 lands point at the top of the bufferCraig Jennings2026-04-251-2/+3
| | | | cj/dashboard-only used to leave point wherever the dashboard buffer was last visited. Now it goes to point-min so the banner and navigator are visible on entry.
* feat: add Slack client module with dashboard integrationCraig Jennings2026-03-061-0/+6
| | | | | | Add emacs-slack config with auth-source credentials, DM/mention-only notifications via notify script, compose buffer workflow, and dashboard icon. Keybindings under C-; S prefix.
* feat(dashboard,calibredb): reorganize nav buttons, tweak display settingsCraig Jennings2026-02-151-21/+24
| | | | | | | Dashboard: reorder nav rows (Code/Email/Agenda/Files/Music, Feeds/IRC/ Flashcards/Books/Terminal), show 10 recent files with filename only, exclude EMMS history from recents. Calibredb: use bookmark emoji for favorites, change favorite keyword to in-progress.
* feat(dashboard): add recent files section to startup dashboardCraig Jennings2026-02-141-2/+4
| | | | | Added 5 most recent files below projects and bookmarks using dashboard's built-in recentf integration.
* fix(dashboard): correct banner title centeringCraig Jennings2026-02-011-0/+24
| | | | | Override dashboard-insert-banner-title to allow manual offset adjustment. Fixes title not being centered under banner image.
* feat(dashboard): Comprehensive dashboard navigation improvementsCraig Jennings2025-11-151-14/+55
| | | | | | | | | | | | | | | - Add single-key navigation (e, c, a, b, f, r, i, t, d) for all dashboard items - Add new navigator buttons: Code (projects), Agenda, Terminal - Reorganize buttons into two balanced rows (5 top, 4 bottom) - Remove bracket decoration around buttons for cleaner look - Add proper spacing between buttons for better readability - Rename labels: "Feeds" → "RSS/Feeds", "Files" → "Directory/Files" - Disable package count and startup time display - Disable 'q' keybinding to prevent accidental dashboard quit Navigator buttons now include: Row 1: Code, Email, Agenda, Flashcards, Books Row 2: RSS/Feeds, IRC, Terminal, Directory/Files
* fix: Reapply dashboard, weather config fixes and todo updatesCraig Jennings2025-11-141-1/+1
| | | | | | | - dashboard-config.el: Change "Ebooks" to "Books" label - weather-config.el: Fix variable name to wttrin-favorite-location - todo.org: Add music player and mousetrap investigation tasks - history: Update command history
* Revert "checking in modified/removed tests and other misc changes"Craig Jennings2025-11-141-1/+1
| | | | This reverts commit 1218bae708a6755e3628f15fef58e6806ac81039.
* checking in modified/removed tests and other misc changesCraig Jennings2025-11-141-1/+1
|
* config: Optimize dashboard loading and reduce bookmark countCraig Jennings2025-11-031-2/+2
| | | | | | Changes: - Changed dashboard to :demand t (load immediately instead of defer) - Reduced bookmark display from 15 to 10 items
* refactor:dirvish: remove unused dired sidebar codeCraig Jennings2025-10-251-2/+0
| | | | | | | Remove unused functions and configurations related to dired-sidebar and nerd-icons-dired. This cleans up the code and reduces unnecessary dependencies within the dashboard-config.el and dirvish-config.el modules.
* feat:erc: Enable IRC client in dashboard and update keybindingsCraig Jennings2025-10-251-1/+1
| | | | | | | | | | Uncommented ERC client initialization in `init.el`. Replaced "cj/erc-start-or-switch" with "cj/erc-switch-to-buffer-with-completion" in dashboard. Altered keybindings to use "C-; E" instead of "C-c e" for ERC commands. Defined a new keymap "cj/erc-keymap" for better command organization. Removed deprecated `locate-library` checks and `cj/erc-command-map`. Refined code layout for clarity.
* refactor: unify and simplify key binding setupsCraig Jennings2025-10-231-15/+18
| | | | | | | | Optimized key binding configurations across modules for consistency and reduced redundancy. Improved conditional requiring to handle errors gracefully in `music-config.el`, ensuring robustness across different machine environments. Eliminated comments clutter and adjusted function definitions to adhere to revised standards.
* changing repositoriesCraig Jennings2025-10-121-0/+144