Commits
- Commit:
cc3566b95acab880c4e80eb1fbda4181d473d016- From:
- espejo got <noreply@nezzontli.xyz>
- Date:
README legible (generado automáticamente desde README.md; no está en el repo original)
- Commit:
cceceab323d9da5c545a7f6316ad6a6103c124b4- From:
- ale <ale_bnes@tuta.com>
- Date:
Paginate the References slide
A terminal slide can't scroll, so a long bibliography ran off the
bottom. bib.Process now emits one '## References' slide plus as many
'## References (cont.)' slides as needed, at most 6 entries each.
- Commit:
d24927d6aacc10158c3a1ce30082852c5e5ea884- From:
- ale <ale_bnes@tuta.com>
- Date:
Add <!-- run --> slide directive: auto-run code, hide source
A slide carrying '<!-- run -->' executes its code blocks automatically
when it is shown and displays only their output -- the source is
stripped before rendering. Built for terminal plots (UnicodePlots.jl):
navigating to the slide draws the graph with no keystroke.
- autoRun() fires executeCodeCmd on slide entry (batched with the image
load), or restores a per-page cached result on revisit so the slide
doesn't re-run and flicker.
- code.Warm() kicks off a throwaway 'using UnicodePlots' at load so the
first auto-run slide doesn't stall on Julia's precompile.
- cached execution temp dirs are cleaned on quit.
- Commit:
89383efba9faff5db72cfb37636b84952dfd140a- From:
- ale <ale_bnes@tuta.com>
- Date:
Order references alphabetically
Process now numbers cited entries 1..N in alphabetical order of the
reference (first author's family name, then year, then title; entries
with no author sort by title) and lists the References slide in that
order -- IEEE-numbered with alphabetical ordering. In-text [n] markers
therefore need not appear in ascending order. Replaces first-appearance
numbering.
- Commit:
84954bcd2e666a66a8ab006b3311573b65575a17- From:
- ale <ale_bnes@tuta.com>
- Date:
Resolve a relative theme: path against the deck's directory
A 'theme: theme.json' in the frontmatter now loads from the presentation
file's folder, like bibliography and images already do, instead of the
process's working directory -- so 'slides sub/dir/deck.md' finds
sub/dir/theme.json. Builtin keywords (ascii/light/dark/notty), URLs and
absolute paths are unchanged.
- Commit:
218876a9c1d446e99f769452e8d7de0a88ca359f- From:
- ale <ale_bnes@tuta.com>
- Date:
Size figures from the measured height of the slide's prose
computeMediaBudget now renders the slide's text alone -- images and $$
blocks removed, captions kept -- and measures how many rows it actually
occupies at the current width, then splits the remaining height across
the media items. Replaces the fixed reservedRows guess, which was too
small when a slide carried a paragraph or a bullet list around the
figure, so the figure overran the text beneath it (or pushed it off the
bottom). Cached in Model.mediaRows and refreshed on every page change and
resize, so the fit re-measures as Kitty's font size changes.
- Commit:
502e0d5bb61287accc4380aa23b380a8929faf1b- From:
- ale <ale_bnes@tuta.com>
- Date:
Add <!-- center --> slide directive
A slide with '<!-- center -->' on its own line gets every text line
horizontally centered within the content width after rendering; Kitty
graphics placeholders keep their existing PadLeft centering. The marker
is stripped before glamour sees it, like <!-- pause -->. For closer /
section / figure-caption slides.
- Commit:
17219495f34a017ba2918517de54d8c7bf15a888- From:
- ale <ale_bnes@tuta.com>
- Date:
Fit stacked media to the viewport; warm the LaTeX cache
mediaBudget() splits a slide's usable height across every media item it
carries (each image and each $$…$$ block is a real graphic), so slides
with several stacked figures/equations no longer overflow the viewport
and get their last figure clipped off the bottom. Recomputed on every
WindowSizeMsg, so it tracks Kitty font-size / zoom live. Replaces the
fixed reservedRows=10 guess.
latex.Warm() pre-renders every unique display-math block in the deck
concurrently in the background from Load(), so navigating to a slide with
equations is a cache hit instead of tectonic's cold start one block at a
time. loadImagesCmd rasterizes a slide's blocks in parallel too. dpi
200 (down from 300) roughly halves Ghostscript's work; the PNG is
downscaled to a few cells regardless, with TextAlphaBits=4 keeping edges
smooth.
- Commit:
fc21959a0c4481b5f9725702e9e24df6458a7c46- From:
- ale <ale_bnes@tuta.com>
- Date:
Reorganize examples/ into one folder per demo, track the personal ones
Every example is now its own self-contained folder (matching the
arquimedes/matlab-laser-mic pattern that was already here), instead of a
flat mix of loose .md files and asset folders. Updates the few
repo-root-relative paths that pointed at the old flat layout: Makefile,
docs/development, custom_theme.md's theme path, and preprocess.md's
import path.
arquimedes/ and matlab-laser-mic/ are no longer gitignored -- they're
real presentations built with this fork, worth keeping versioned instead
of local-only.
- Commit:
97a534a90733f873f1ed2846bc82a2d016797ccb- From:
- ale <ale_bnes@tuta.com>
- Date:
Rewrite README to a minimal quick-reference, move details to examples/
- Commit:
be287bea29d2b7f0494bc0cfb1b2bb2713a31b98- From:
- ale <ale_bnes@tuta.com>
- Date:
Center code-execution text output, demo a GIF saved from code
UnicodePlots (and any other code block's plain stdout) now centers the
same way image-based plots already do via their own PadLeft, instead of
hugging the left edge while GR/CairoMakie output sits in the middle.
Also adds a Julia example that saves an animated GIF from a ctrl+e block
-- confirms the existing GIF cache path (Fase 7) already applies to
execution-produced images too, no code change needed there.
- Commit:
bcb2ab71430e9ef8b8c9e37376d41437b962d075- From:
- ale <ale_bnes@tuta.com>
- Date:
Document progressive reveal, Julia plots, and animated GIFs in README
- Commit:
47e20ffb625184095c05c9a21b83032fe0a7f6cd- From:
- ale <ale_bnes@tuta.com>
- Date:
Play animated GIFs for real via Kitty's native animation
A .gif with more than one frame now decodes every frame (respecting
per-frame disposal, since GIF frames can be partial and rely on
compositing over previous ones), transmits them under a single image id,
and starts looping playback -- all server-side, so once sent there's
nothing left for this process to do per frame. Single-frame GIFs still
take the plain static-image path.
Adds DeleteSeq to free an animated image's memory once it's no longer
needed, though nothing calls it automatically yet: an off-screen
animation keeps ticking in the terminal for the rest of the session,
same accepted tradeoff this fork already makes for static images never
being explicitly freed either.
- Commit:
dd0408215b51197334ac5262c29d457559f41a92- From:
- ale <ale_bnes@tuta.com>
- Date:
Run code execution async and show plots as real images
Ctrl+E now runs off the render path (a tea.Cmd), so a slow first-time
compile (Julia's Plots/Makie precompilation can take minutes) no longer
freezes the presentation -- the existing spinner shows while it runs.
Any image file a code block's execution leaves behind (savefig, save,
...) is now picked up from its own temp working directory and shown
below the text output, reusing the image package's Kitty pipeline.
For Julia specifically: --color=yes so UnicodePlots' ANSI output survives
being captured (Julia disables color when stdout isn't a TTY), COLUMNS/
LINES sized to the slide so it has a real canvas instead of a fixed
80x24 fallback, and GKSwstype=100 so GR.jl/Plots.jl's GR backend never
tries to open a window it can't display.
julia-bin added to the dev shell for local verification.
- Commit:
939e2b9e87d44d10145e5e533d2efe8fe2b5bbb7- From:
- ale <ale_bnes@tuta.com>
- Date:
Add progressive reveal within a slide via <!-- pause -->
- Commit:
76524214d5cfa412ee9ae29698f2114a5d57f742- From:
- ale <ale_bnes@tuta.com>
- Date:
Rewrite README for this fork, drop upstream community files
README now documents this fork's own features (LaTeX, images,
bibliography), install instructions specific to this repo, and drops
package-manager badges/links that pointed at the upstream project.
CODE_OF_CONDUCT.md, CONTRIBUTING.md, and SECURITY.md were written for
an open-source project accepting outside contributions and vulnerability
reports to the original maintainer's email -- neither applies to a
personal fork, so they're removed rather than adjusted. Same reasoning
for .github/FUNDING.yml (pointed at the upstream maintainer's sponsor
page) and the issue/PR templates.
LICENSE keeps Maas Lalani's original MIT copyright notice (required to
keep redistributing this fork under MIT) and adds a second line for
this fork's own changes.
- Commit:
f76d96eca0fca63ef663748521e498030897f9ad- From:
- ale <ale_bnes@tuta.com>
- Date:
Refresh vendorHash for the added bubbles/v2/spinner dependency
nix build was failing: the pinned vendorHash predated the spinner
component being wired into internal/model, so the sandboxed vendor
dir it unpacks to was missing that package.
- Commit:
b1f38837a95ad615458029e67dd2f3c8a40702f3- From:
- ale <ale_bnes@tuta.com>
- Date:
Trim unnecessary comments in this session's new code
Shortens several multi-paragraph explanatory comments down to their
essential point, and drops a stale reference to an uncommitted spike
directory and a doc comment that only restated the function name.
Also gitignores the personal example presentations under examples/,
kept local only.
- Commit:
a0b9e5dea49c842bbb03baa65d0de54e01acdccc- From:
- ale <ale_bnes@tuta.com>
- Date:
Remove upstream GitHub Actions workflows
Not needed for a personal fork.
- Commit:
1686f28a01bc9570c6a1149302570e0f37f14171- From:
- ale <ale_bnes@tuta.com>
- Date:
Polish layout, sizing, and physics notation for projector use
- Compute image/formula budget and margins from real viewport size
instead of hard-coded columns/rows, and center content that's
narrower than the available width.
- Keep the status bar pinned to the bottom and stop content from
overflowing the margin when the terminal is resized/zoomed.
- Show a spinner while images/formulas are still loading instead of
a blank gap.
- Add physics vector/derivative notation (vec, hat, dot, ddot, bar)
to the inline LaTeX-to-Unicode converter, and named operators
(sin, log, lim, ...); non-combining glyphs are used since
combining marks get silently dropped somewhere in the render
pipeline.
- Graduated heading styles (bold/banner h1, bold h2) for visual
hierarchy since terminal font size itself isn't controllable from
the app.
- Commit:
372f60546819d91aaf4368cb7ea2b8a980156bfc- From:
- ale <ale_bnes@tuta.com>
- Date:
Add numbered bibliography and citation support
Adds a hand-rolled BibTeX parser (internal/bib) that resolves [@key]
citations in order of first appearance, rewrites them to numbered
markdown links, and appends a generated References slide in an
IEEE-ish format. Enabled per-presentation via a bibliography: field
in the frontmatter; slides without it are unaffected.
- Commit:
a31d8fbf9d5ffda70750701ee27ed51bdbac593a- From:
- ale <ale_bnes@tuta.com>
- Date:
add LaTeX math rendering ($...$ inline, $$...$$ block)
Block math ($$...$$) compiles via tectonic + ghostscript to a PNG and
reuses internal/image's Kitty transmission/cache/placeholder pipeline
unchanged, so it gets a real, persistently-cached image. Inline math
($...$) never becomes an image -- a Kitty placeholder forced to one
row would squash anything with vertical extent, so it's approximated
as Unicode text instead, which also doubles as the fallback for block
math when there's no graphics support or compilation fails.
Found and fixed a real tectonic/standalone interaction along the way:
the default (non-preview) standalone backend doesn't recognize
\[...\] or equation* as document content in this bundle ("Missing $
inserted"), confirmed by hand with tectonic/gs directly before wiring
it in -- needs \documentclass[preview,border=2pt]{standalone}.
- Commit:
eca55a61963c6f7a60742d25a78010e6ca72386e- From:
- ale <ale_bnes@tuta.com>
- Date:
add real image rendering via Kitty Graphics Protocol
Renders  as actual terminal graphics using Kitty
Unicode Placeholders, with the caption shown below via glamour. Falls
back to today's plain-text image rendering on terminals that don't
answer the capability probe, so this is a no-op change for anyone not
on Kitty.
Image decoding/transmission is kept off the render path: View() only
ever does a non-blocking cache lookup, while the slow work (decode,
PNG re-encode, transmit) runs in a tea.Cmd triggered on page change and
window resize. Images are sent as PNG so Kitty does the scaling itself,
avoiding a resize dependency.
- Commit:
24a58b81d73f151c7ba7236890a6e13aea9f0c78- From:
- ale <ale_bnes@tuta.com>
- Date:
add nix flake devshell and build
Sets up a reproducible dev environment (go, tectonic, ghostscript,
imagemagick) and a buildGoModule package output, so the fork can be
built and tested without a system-wide Go toolchain, ahead of adding
LaTeX/image/bibliography support.
- Commit:
92af1ef1f33a75bd51db9842a760bd228f3b1a61- From:
- Maas Lalani <maas@lalani.dev>
- Date:
bubbletea v2
