(last seen near
Abingdon, VA)
(last 300 commits)
chasm-toolchain
2026-02-23
Added beginning of insert mode.
This immmediately revealed a cursor problem, namely that I can't
style it with a vertical bar without using the actual terminal
cursor (I've been styling the normal-mode cursor with a highlighted
cell, not the real terminal cursor). I'll need to refactor a bit to
support that, but for now I'm just using a different color.
On the other hand, I was able to implement some basic commands:
- Switch to insert mode from normal via 'i',
- Switch to normal mode from insert via 'esc',
- Insert chars when in normal mode,
- "Forward deletion" (delete-key deletion, as opposed to backspace).
chasm-toolchain
2026-02-22
Fixed bug where widgets were using stale frame sizes.
chasm-toolchain
2026-02-22
Added cursor x position memory.
Explicit horizontal movements store their final x position. When
making vertical movements, the cursor attempts to honor this stored
x position while clamping to the line length. The stored x position
is updated when another horizontal movement is made.
If this is confusing, open a text editor (I used Vim as a reference for
the observed behavior), move the cursor to the end of the line, then
navigate up/down. If the moved-to line is longer than the moved-from
one, the cursor will be at the same x position. If it's shorter, it
will be clamped to the moved-to line's length. This will apply no matter
how many times you move up/down. Moving horizontally will reset the
"stored" position.
chasm-toolchain
2026-02-22
Added basic horizontal cursor display and movement.
- h/l for left/right
- 0/$ for beginning/end of line
chasm-toolchain
2026-02-21
Added a cursor_y position and assocated behavior.
- The editor now tracks cursor (y only) movement
- The viewport scrolls 1:1 if the cursor goes outside
the current view
- Added keybinds for cursor up/down (j/k/uparrow/downarrow),
viewport up/down (shift+), and fastscrollup/down (ctrl+).
Next steps will be cursor_x movement across the columns,
and 'insert' mode.
chasm-toolchain
2026-02-20
Added a scrollbar
chasm-toolchain
2026-02-20
Added Y/N shortcuts to YesNoModals
chasm-toolchain
2026-02-20
Filling in editor components.
1. Added modal for app quitting,
2. Added editor with file load and simple scroll,
I'm still messing with event handling and call/returns. It's
not clear yet how I'll let child views control which views
are visible. Bunch of stuff to read/figure out.
chasm-toolchain
2026-02-19
Added basic app elements.
UI development paradigms are generally foreign to me, so
I'll be doing some exploration while implementing basic features.
Right now there's a status bar and module picker. Next is the basic
editor and module creation.
chasm-toolchain
2026-02-16
Added project scaffolding.
I need root directory for the editor to hook into. It's
primitive at the moment, the only requirements being:
1. There must exist a file, chasm.toml, at the specified dir,
2. There must be a src/ directory within the specified dir.
It's just enough to signal "project dir" without defining much
about it (yet).
chasm-toolchain
2026-02-15
Added ratatui and crossterm scaffolding for editor.
The goal here is to experiment with a TUI-based editor
for chasm assembly projects.
chasm-toolchain
2026-02-14
Started assembly editor project
bferris413.github.io
2026-02-08
Applied uniform border to code
bferris413.github.io
2026-01-27
Updated single line styling.
bferris413.github.io
2026-01-27
Small changes to formatting.
metal-arm
2026-01-25
Updated some verbiage in Project 5.
metal-arm
2026-01-25
Added Project 5 - Linker and module system.
chasm-toolchain
2026-01-23
Added doc comments explaining rationale
chasm-toolchain
2026-01-23
First cut at an object file.
The file format is more-or-less ad-hoc. I wanted something that was
going to be human-readable while not being fully textual. I ended up
with the following:
1. A binary prelude containing some magic bytes, the version number,
and the length of the header,
2. A human readable header containing the struct fields of
AssemblyModule,
3. The module's code as binary.
I'm fine-ish with it as first pass, but may just end up with a fully
binary format and some kind of chasm 'objdump' program to read it. We'll
see.
chasm-toolchain
2026-01-19
Added public labels.
The syntax is '@pub label'.
chasm-toolchain
2026-01-19
Cleaned up a couple error messages, removed import
chasm-toolchain
2026-01-17
Removed redundant tokenization for single-symbol tokens.
chasm-toolchain
2026-01-17
Added application support for multiple files.
- Previously 'chasm assemble' took a single file, it now takes a list
- 'chasm assemble' now automatically invokes the linker on the given
files.
- Added '--no-link` flag to opt out of linking. When provided,
'assemble' will write the modules to their respective binary files as
before.
chasm-toolchain
2026-01-17
Fixed bug where definition references were always 32-bit.
chasm-toolchain
2026-01-16
Renamed patch_size to ref_size.
chasm-toolchain
2026-01-16
Added support for branch patches across modules.
- All labels are considered public.
I'll take the next few rounds of commits to do some cleanup, but
immediately afterwards I'll delineate between public and private labels.
chasm-toolchain
2026-01-16
First cut at imports and cross-module references.
- Updated definition references ($thing) to require a width.
Deciding on syntax for this was difficult and the current solution is
unsatisfying, I have a mental note to revisit it: $32:thing.
- Added support for definition references across modules:
$32:modname::thing
- Added support for label references across modules: &module::label.
Label references are more palatable because the width is always the
size of a pointer (currently 32-bit since we're targeting Cortex M
first).
There's pieces laying around the shop, but all the plumbing and
implementation is present. Some of the proverbial mess needs attention,
and I also need to add the final support for applying branch patches.
chasm-toolchain
2026-01-05
Discovered variable-width sizing in emitted assembly, fixing.
- This commit addresses the declaration side, although perhaps not
strictly needed.
- Next commit will fix the use/caller side, where the assembler
must know the length of the imported reference.
chasm-toolchain
2026-01-05
Added linker patch for thumb addr pseudo op
chasm-toolchain
2026-01-04
Added linker patch support for branch instructions.
While implementing this, I realized that current branching
only supports local references, and thus no linker patching
is needed.
As soon as I add reference support across modules, this will change.
chasm-toolchain
2026-01-03
Implemented linker patching for plain label offsets.
chasm-toolchain
2026-01-01
Updates to support linker work.
- Differentiate between linker patches and assembler patches,
- All address references used during assembly will generate a linker
patch,
- This needs some work around automation, adding is manual, tedious
and error-prone,
- Added linker tests for basic main/lib module behavior.
Next commit with actually apply linker patches when linking.
chasm-toolchain
2025-12-30
Updated import references to fail codegen if the module wasn't imported.
chasm-toolchain
2025-12-30
Started defining linker semantics and constraints.
1. Initial support is for executables only.
2. All modules must be included at link-time.
3. One and only one module must be designated "main".
4. The main module is the root. Modules provided to the linker
that aren't directly or indirectly imported into main are ignored.
None of this is meant to mirror conventional C-toolchain linkers
(although some parts may, and some parts may be wildly different).
chasm-toolchain
2025-12-29
Added linker project boilerplate.
chasm-toolchain
2025-12-29
Added assembler support for module references.
Next step is linking and resolving references across modules.
chasm-toolchain
2025-12-25
Intermediate commit
chasm-toolchain
2025-12-23
Linker prep: added pseudo instruction for exported definitions
chasm-toolchain
2025-12-23
Added basic import statement
metal-arm
2025-12-19
Added Project 4 - function calls
chasm-toolchain
2025-12-19
Updated emulator scripts to use cgdb
chasm-toolchain
2025-12-16
Added mov! pseudo instruction.
The syntax is `mov!(reg, hex_literal)`, where hex_literal is a
32, 16, or 8-bit hex literal. The different bit widths result
in different instructions being generated:
u32 => movw(lower16), movt(upper16),
u16 => movw,
u8 => movs
chasm-toolchain
2025-12-15
Added define pseudo instruction.
- Syntax is `define!(identifier, hex literal)`
- After definition, `$identifier` evaluates to the hex literal
- The definition itself doesn't appear during code generation
chasm-toolchain
2025-12-14
Added some unit tests for pop error paths
chasm-toolchain
2025-12-13
Added POP {regs...} - T1 encoding
chasm-toolchain
2025-12-12
Added PUSH {regs*} - T1 encoding.
metal-arm
2025-12-11
Fixed clarification on project 2 references.
chasm-toolchain
2025-12-10
Removed debug prints from BL codegen.
chasm-toolchain
2025-12-10
Added basic qemu setup for toolchain-centric changes.
chasm-toolchain
2025-12-09
Added BL instruction after some...difficulties.
metal-arm
2025-11-29
Added LLM dislaimer (no programmatic usage).
metal-arm
2025-11-29
Added Project 4 - button press LED toggle.
chasm-toolchain
2025-11-27
Added BX instruction.
chasm-toolchain
2025-11-21
Added EORS reg reg.
chasm-toolchain
2025-11-19
Consolidated some token fetching logic.
chasm-toolchain
2025-11-19
Added pad-with-to! pseudo instruction.
The only supported form is `pad-with-to!(<byte: u8>, <target: u32>)`, which fills
the output with <byte> from the current address up to, but not including
<target>.
An soon-to-be-implemented extension will support <target> as a label
reference.
chasm-toolchain
2025-11-19
Added support for pseudo-instructions.
These take the format instruction!(operand). The intent is
to provide support for common operations that don't neccessarily
correspond to a specific assembler mnemonic, or wouldn't be
found in the ARM technical reference.
The first supported pseudo is `thumb-addr!(&ref)`, which expects a
label reference and relaces it with <label-address> | 1.
An obvious objection to this pseudo is that it's too specific. A more
general pseudo like `math!(&ref | 1)` would be applicable to a variety
of usecases. I agree, but a) I wanted something I could use immediately,
and b) I didn't want to get tangled up in a more general-purpose
implementation when it wasn't strictly neccessary.
It's possible that thumb-addr! gets removed in lieu of something more
general, but this is fine for now.
chasm-toolchain
2025-11-18
Added support for branching forward.
Adding support involved generating code for forward references with 'dummy'
values, and then making a second pass over all unresolved references
to patch the generated binary.
The implication of doing so is that we can now support if/else logic.
chasm-toolchain
2025-11-17
Added '.' to README.
chasm-toolchain
2025-11-17
Added support for standalone label refs '&label'.
chasm-toolchain
2025-11-17
Added support for label references.
- Branch-related syntax went from 'B @label' to 'B &label'.
- The actual benefit is that we can use &label elsewhere to
refer to arbitrary addresses.
chasm-toolchain
2025-11-09
Made LDR and STR use [R*] syntax.
bferris413.github.io
2025-10-29
Bunch of small styling changes.
metal-arm
2025-10-26
Added project 2 - red LED.
chasm-toolchain
2025-10-25
Added BEQ (t1 encoding)
chasm-toolchain
2025-10-25
Added AND(register)
chasm-toolchain
2025-10-24
Added encoding and instruction:
LDR(immediate) - t3 encoding,
ORRS(register) - t1 encoding,
STR(immediate) - t1 encoding.
chasm-toolchain
2025-10-24
Added LDR(immediate) - t1 encoding
chasm-toolchain
2025-10-23
Added MOVT
chasm-toolchain
2025-10-23
Added movw - first 32bit instruction
metal-arm
2025-10-15
Added Project 1 - chasm conversion.
chasm-toolchain
2025-10-15
Added chasm project README.
chasm-toolchain
2025-10-15
Added metal-arm/0 as a test.
chasm-toolchain
2025-10-15
Added support for comments, via ';'
chasm-toolchain
2025-10-14
Added support for 'B @label' (backwards only)
chasm-toolchain
2025-10-14
Added labels, like @label
chasm-toolchain
2025-10-13
Added ADDS Rdn, #imm8
chasm-toolchain
2025-10-12
Support for MOVS Rd, #imm8 (hex)
chasm-toolchain
2025-10-08
Added tokenize, parse, and codegen for 8-32bit hex literals.
chasm-toolchain
2025-10-06
Added assembler scaffolding
metal-arm
2025-10-06
Changed comment char in Project 0 program.
chasm-toolchain
2025-10-06
Changed comment char to ';'.
metal-arm
2025-10-04
Added project 0 - machine code and flash.
metal-arm
2025-10-04
Added project README.
chasm-toolchain
2025-10-01
Added CLI help
chasm-toolchain
2025-10-01
Added a few CLI args.
- --reverse (-r): bin -> text instead of text -> bin
- --row-len (-l): specify number of bytes per row (line break after n hex bytes)
- --spaced (-s): spaces between hex bytesspaced: bool,
- --offsets (-o): Print hex byte offsets in left column.
chasm-toolchain
2025-09-30
Added tests for existing functionality.
chasm-toolchain
2025-09-29
Added basic text -> binary support, including,
- All whitespace is stripped from the text input,
- Comments (preceding #) are stripped,
- Output to file or stdout.
chasm-toolchain
2025-09-29
Added hx project.
metal-arm
2025-09-23
Initial commit
chasm-toolchain
2025-09-16
Initial commit
bferris413.github.io
2025-08-26
Updated markdown parsing to include inline HTML.
dover
2025-08-20
Paid the long-coming clippy tax.
dover
2025-08-19
Made --to-html a global arg.
dover
2025-08-19
Fixed git issues.
- We were including submodules in attempted diffs.
- We weren't pulling files from the working directory and repo
correctly. Sometimes we would do a repo read when we really needed the
working directory, and vice-versa.
dover
2025-08-18
Fixed spacing issue where multiple diffs weren't separated by newline.
bferris413.github.io
2025-08-09
Added Rust dependency post.
dover
2025-07-24
Fixed issue where extra padding was applied to add/remove items.
dover
2025-07-23
Version bump.
dover
2025-07-23
Bugfix: filenames were printed even if there wasn't a diff.
dover
2025-07-21
Updated tag.
dover
2025-07-21
Added tuple/field diffs.
dover
2025-07-21
Added unit/field diffs.
dover
2025-07-21
Added unit/tuple diffs.
dover
2025-07-18
Added HTLM output escapes.
dover
2025-07-18
Variants now elide information.
dover
2025-07-18
Updated TODO with completed and upcoming items
dover
2025-07-18
Started updating struct diff logic.
- This fixes the issue where order mattered when diffing structs
with named fields.
- Tuple structs and name structs are handled.
- Still need support for diffs like tuple -> named and vice versa.
- Also discovered an issue where enum variants with tuple/field
types aren't elided like other container types.
dover
2025-07-16
Updated TODO and some comments.
dover
2025-07-09
Added visual cue when eliding members.
dover
2025-07-07
Refactored to use shared signature parsing.
dover
2025-07-05
Elide whitespace in trait item diffs.
dover
2025-07-04
Elide whitespace from enum diffs in the same vein.
dover
2025-07-04
Updated impl_ and struct_ change construction.
* Impls now elide whitespace like structs.
* Fixed a bug with structs where completely new members
caused an infinite loop.
dover
2025-07-03
Fixed an issue with struct parsing.
* The shared parsing functions were referencing "new" structs only.
dover
2025-07-02
Refactored struct's View implementation to:
* Elide whitespace not pertaining to any struct diffs (eliminating diffs as long as the struct's definition),
* Share a bunch of code between old/new parsing.
dover
2025-06-28
Made changes to HTML formatting.
I'll slowly try to make the 'feel' of the UI familiar, or at least
not completey foreign, to folks familiar with the GitHub diff UI.
It's not there yet, but something actually useful is forming...
dover
2025-06-27
Added basic HTML output.
CSS grid is used for formatting, but honestly a table would
be easier to work with. GitHub apparently uses a table for
their diffs, so I'll likely take that as my cue/allowance
to do the same.
dover
2025-06-25
Adding plumbing for --to-html output option.
bferris413.github.io
2025-06-23
More styling updates.
bferris413.github.io
2025-06-23
Some styling updates, edited post.
bferris413.github.io
2025-06-22
Updated a bunch of random stuff, prepped for first post.
bferris413.github.io
2025-06-08
-
bferris413.github.io
2025-06-08
Moved nav bar next to header.
bferris413.github.io
2025-06-01
Deploying with (empty) posts support.
bferris413.github.io
2025-06-01
Updated and tested publish/deploy scripts.
bferris413.github.io
2025-06-01
Updated local deploy script.
bferris413.github.io
2025-05-31
Added new deployment layout and directory structure.
bferris413.github.io
2025-05-30
Updated templates dir
bferris413.github.io
2025-05-30
Testing posts build.
bferris413.github.io
2025-05-30
Got post index page working.
bferris413.github.io
2025-05-30
Added basic support for posts/ index.
bferris413.github.io
2025-05-26
Fixed home location when near Bristol.
My ISP comes out of Bristol, TN or Bristol, VA. I had a check
in place to correct Bristol, TN to my current home, but not
for VA (Bristol straddles the TN/VA border). I added the check.
dover
2025-05-25
Updated README.
dover
2025-05-19
Updated install instructions.
dover
2025-05-19
Updated wrongly-formatted license.
dover
2025-05-19
Updated .toml.
dover
2025-05-19
Updated README, adding publishing stuff.
dover
2025-05-18
Fixed issue where appendln was inserting newlines incorrectly.
dover
2025-05-16
Switched to relative path when displaying overview.
dover
2025-05-16
Added basic --fancy output (but removed the flag).
dover
2025-05-16
Starting --fancy diff output (somewhat akin to 'git diff'-style).
dover
2025-05-15
Fixed bug where add/remove impl diffs were displaying function bodies.
dover
2025-05-13
Fixed bug where impls weren't working on traits.
dover
2025-05-13
Updated struct diffs to omit fields that weren't changed.
dover
2025-05-12
Updated enum diffs to omit variants that weren't changed.
dover
2025-05-12
Removed useless design block.
dover
2025-05-12
Trying to get impl items to omit items that didn't have a diff.
For example, skip printing methods that don't have a signature change.
I'll apply this to struct members, enum variants, and traits, but
the algorithm needs more thought.
dover
2025-05-09
More finely-grained diff for enum variants, specifically around 'fields'.
dover
2025-05-08
Used function diffs in trait items.
dover
2025-05-08
Removed old column formatting.
Display-based output is managed by View now.
dover
2025-05-07
Added View to Use
dover
2025-05-07
Deleted impl Display on TraitDiff.
dover
2025-05-07
Converted trait diffs to View.
dover
2025-05-06
Converted enum diffs to View.
dover
2025-05-06
Converted structs to use View instead of Display.
dover
2025-05-06
Removed display from impls structs.
dover
2025-04-17
Implemented impl blocks.
- Need to remove { .. } on impl functions.
dover
2025-04-17
Removed display from Function[s]Diff
dover
2025-04-17
Finished function inputs and block omissions.
dover
2025-04-17
Giant commit for a a bunch of formatting changes.
- Added colored output on terminals.
- Starting with functions, output formatting is delegated to a separate
struct. The goal is to output a single type that can then be formatted
based on the chosen "backend." Text output is currently supported,
but HTML is planned for use in GitHub-like PRs.
- Need to finish function inputs.
dover
2025-04-15
Deleted Vis and just using syn::Visibility.
dover
2025-04-15
Updated TODO, starting ViewableDiff.
dover
2025-04-14
Use original source for impls.
dover
2025-04-14
Added original source for function and traits.
dover
2025-04-13
Use original source for enum diff.
dover
2025-04-13
Use original source for struct diff.
dover
2025-04-13
Added original source to each overview and diff.
This enables us to:
- use the author's original formatting when presenting the diff,
- selectively highlight the original source based on the diff.
dover
2025-04-13
Impl display implemented, need to fix:
- Impl displays full block, need to remove fn bodies,
- Formatting
dover
2025-04-13
Filled out impl diff (functions only).
dover
2025-04-04
Added boilerplate for impl diffs.
dover
2025-04-02
Added ~ on modified trait/struct/enum/fn
dover
2025-04-02
Filled in 'diff <c1> <c2>' capability.
- Commits can be diffed like 'dover diff <tree-ish> <tree-ish>'
- Intent is to emulate the general cases of 'git diff <...>'
dover
2025-03-31
Fixed side-by-side formatting
Existence changes (+/-) for top-level types like functions
and structs were being printed in the left column only,
instead of following the "left old, right new" columnar
format.
dover
2025-03-28
Added diff subcommand in place of just 'dover'.
eg: dover diff
I want to capitalize on the muscle memory for 'git diff'.
dover
2025-03-27
Formatting and git search changes.
- Formatting was appending a bunch of newlines to the final output, fixed.
- Enabled search through parent directories if a git repo wasn't found in
currentdir.
dover
2025-03-26
Removed redundant overview formatting when set was empty.
dover
2025-03-26
Added recent additions to overview print.
- Enums
- Traits
- Freestanding functionswq
dover
2025-03-26
Updated TODO.
Next is impl blocks.
dover
2025-03-26
Changed function formatting.
Removed function blocks from display since they're irrelevant.
dover
2025-03-25
Added freestanding function diffs.
dover
2025-03-14
Added function diff boilerplate.
dover
2025-03-09
Refactored OverviewDiff display.
- Display now doesn't show headers for diffs that aren't present.
dover
2025-03-08
Added support for diffing trait modifications.
- (prior support was just for existence)
- Updated todo.
dover
2025-03-08
Added coarse trait diff.
dover
2025-03-05
Added Trait scaffolding.
dover
2025-03-02
Updated TODO. Next tasks include:
* impl blocks for structs and enums,
* freestanding functions,
* trait signatures
budget
2025-03-02
Added category importance (UI) and default port (backend).
dover
2025-02-28
Added enum and variant diffing.
Sample output:
--------------------------------------------------------------------
enum L7Protocol<T: Clone> { enum L7Protocol {
Http { t: T }, Https,
Https, Dns,
STUN, Smtp,
} }
variants:
- Http { t : T } + Dns
- STUN + Smtp
generic parameters:
- T : Clone
--------------------------------------------------------------------
dover
2025-02-28
Added scripts/ and test_files.
dover
2025-02-23
Added enum and variant scaffolding.
Some shared structs/functions were moved from structs.rs
into lib.rs (like struct Vis, get_source, etc.).
dover
2025-02-23
Added coarse fields diff.
bferris413.github.io
2025-02-23
Formatted commit messages with pre tag.
dover
2025-02-23
Added formatting goals from previous commit.
Given two files containing (side-by-side):
```
use cake::cheese; use cake::cheese::eggs;
use rice;
pub struct Thing<T, U, V: Clone, W, X>(T, U, V) struct Thing<T, U>(T, U)
where where
X: Cake, U: Cake,
U: Powder, T: Eggs;
W: Rice,
Y: Milk;
```
We can get a diff like:
```
Use
¯¯¯
- cake::cheese
+ cake::cheese::eggs
+ rice
Structs
¯¯¯¯¯¯¯
pub struct Thing<T, U, V: Clone, W, X>( struct Thing<T, U>(
T, T,
U, U,
V, )
) where
where U: Cake,
X: Cake, T: Eggs;
U: Powder,
W: Rice,
Y: Milk;
visibility:
- pub + (none)
generic parameters:
- V : Clone
- W
- X
where clause:
- X : Cake + U : Cake
- U : Powder + T : Eggs
- W : Rice
- Y : Milk
```
TODO:
- struct fields
- Formatting will likely change to something capable of layouts
(ratatui).
dover
2025-02-22
Working on struct visualization.
* Using `prettyplease` for formatting
* Need to decide what to use for side-by-side layout. Options:
* ratatui, if I can use it without replacing the screen,
* self written, if it doesn't get too painful.
dover
2025-02-21
Working on visualizing more complex diffs.
Sample struct output (WIP):
Structs
¯¯¯¯¯¯¯
pub struct Thing<T, U, V: Clone>(T, U, V) pub struct Thing<T, U, K: Milk + Eggs>(T, U, K)
where
X: Cake,
U: Powder;
Generics
¯¯¯¯¯¯¯¯
- V: Clone + K: Milk + Eggs
- where
- X: Cake,
- U: Powder
Fields
¯¯¯¯¯¯
- V + K
dover
2025-02-17
Added coarse-grained where clause diffing.
'where' clauses are diffed by existence (for now), similar to generic
types.
Also like generics, the plan is to introduce per-type/lifetime diffs on
the constraints, but that's a future problem. The immediate goal is to
get an end-to-end diff of all main components (struct args, return
types, etc), before tackling more specific diff problems.
dover
2025-02-13
Added coarse-grained generic diffing.
Generic diffs currently only check existence. That is, if the
exact generic type isn't found in another struct's declaration,
it's counted as added or removed.
The next step is to include modifications to a type (like T: Debug +
Clone), and to be able to say "T was modified, added Clone constraint").
dover
2025-02-11
Filled out struct templates for Generics[Diff].
dover
2025-02-10
Added struct/field diffing.
Technically this only supports unit/tuple structs, but with the
struct variant refactor from a recent previous commit, 'standard'
structs are likely supported as well.
Next up are enums, traits, and impl blocks.
dover
2025-02-09
Added fields to Struct struct.
- Removed struct variants.
- diff/overview will be done on struct, vis, and a struct's fields.
dover
2025-02-09
Changed Vis formatting.
dover
2025-02-07
Added structs diff.
Formatting isn't perfect, but the model is correct enough.
dover
2025-02-07
Updated enum signature in git.rs.
dover
2025-02-07
Updated diff method and applied to Use statements.
* The diff return type for containers will be `Option<T>`.
* Diffs will be 'member' based, e.g
* Use members are a single use statement (non-nested),
* Struct members are (currently) vis and fields,
* Field members are (name, type) pairs,
* etc.
dover
2025-02-04
Refactored modules.
* Overview goes into its own module.
* Overview "members" (structs, use statements, etc.) go into submodules
of overview.
dover
2025-02-03
Added TODO to repo.
This has been going since the start of the project, but it's worth
adding to the repo in case I need a timeline of added/completed.
dover
2025-02-03
Added non-diff overview for a list of .rs files.
dover
2025-02-02
Included early use of git.
- Running 'dover' in a repo root will diff unstaged changes against
HEAD.
- Running 'dover files <file1> <file2> will diff two files on the
filesystem.
dover
2025-02-02
Added diff behavior between two files.
Sample output:
src/lib.rs
¯¯¯¯¯¯¯¯¯¯
Imports:
anyhow::Context
anyhow::Result
std::fmt::Display
std::fs
std::ops::Deref
std::path::Path
std::path::PathBuf
syn::File
syn::Item
syn::ItemFn
syn::ItemUse
syn::UseTree
test_files/lib_copy.rs
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Imports:
anyhow::Context
anyhow::Result
std::collections::HashSet
std::fmt::Display
std::fs
syn::File
syn::Item
syn::ItemFn
syn::ItemUse
syn::UseTree
src/lib.rs -> test_files/lib_copy.rs
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Imports:
+ std::collections::HashSet
- std::ops::Deref
- std::path::Path
- std::path::PathBuf
dover
2025-01-29
Added support for use statements.
Uses are flattened, de-aliased, de-duplicated, and collected into
a HashSet.
dover
2025-01-28
First commit of "diff overview" AKA dover.
dover
2025-01-28
Initial commit
bferris413.github.io
2025-01-18
Updated job description
This seems like something that will be tweaked forever...
bferris413.github.io
2025-01-11
Fixed full-width link issue.
bferris413.github.io
2025-01-11
Updated spacing and removed border.
bferris413.github.io
2025-01-09
Fixed spacing on mobile.
bferris413.github.io
2025-01-07
Updated some verbiage in the job description.
bferris413.github.io
2025-01-07
Updated dev watch script.
bferris413.github.io
2025-01-06
Expanded the site, included a little work history.
bferris413.github.io
2024-12-26
Updated to include last location.
cottage
2024-12-25
Updated TODO and categorized certain 'milestone' goals for the project.
The purpose has always been to make programming 'better' by shortening the feedback loop when
reading and writing code. The intended features operate at at least two 'meta-layers' of programming work:
* The function level, like when you're reading/writing a function.
* The module/architectural level, like how different modules compose to form the entire application.
The core features are:
* Interactive Trace View
(function-level)
- Is implemented in VSCode Cottage extension (with some TODOs for polish)
- Like printf debugging, but the timeline is 2d and interactive.
- Interaction involves the user hovering over values. The view responds by
showing the values for associated cells.
- This can be thought of as a replay editor in which all the steps are available immediately.
* Execution Graph
(module-level, but some function-level as well)
- Is not implemented
- Will show a graph-like view (a la Sprotty and ElkJS) of data paths
- Zoomable to different layers of the application (mitigates the massive picture of
'boxes and arrows' of certain prior attempts from other projects)
- Collapsable to show only a single piece of data/function.
* Inline Forever
(function-level)
- Is not implemented
- Inline function calls to a certain depth to show a more complete view of code
* Call Trace
(module and function-level)
- Is not implemented
- Simple execution trace showing what actually happened (like bash's 'set -x' or lisp's (trace) macro).
cottage
2024-12-21
Removed yet more debug logs in extension.
cottage
2024-12-19
Made select styling in code comparable to trace view.
* Code used border outline, trace used bg color.
* Code now uses the same bg color.
This more or less unifies styling between trace and code views.
cottage
2024-12-18
Fixed issue where decorations wouldn't display on extension load.
cottage
2024-12-17
Fixed issue where a document's activeTextEditor wasn't being null-checked.
cottage
2024-12-17
Updated hover support.
* Hover in code sends events to webview, and webview sets styles accordingly.
* Longstanding exception when opening webview depending on if a cottage file is open or not, needs fixed.
* Updated TODO.
cottage
2024-12-17
Removed many debug logs from extension.
cottage
2024-12-17
Hover now responds to cursor movement.
* TODO: Pass hover to webview
* TODO: Remove onhover in webview and receive message from client
* TODO: Remove debug logs.
cottage
2024-12-16
Added boilerplate for tracking cursor movements.
* Goal is the repurpose 'hover' in trace view to reflect cursor movements in editor, instead of responding to hover in trace view.
bferris413.github.io
2024-12-12
Removed UTC time from commit date.
cottage
2024-12-12
Updated TODO and cottage test script.
bferris413.github.io
2024-12-11
Fixed styling.
* Graph wasn't scaling correctly with the updated commit size (too much
history).
bferris413.github.io
2024-12-08
Fixed styling, it'll probably need more work but it's not ultra-small anymore.
bferris413.github.io
2024-12-08
Added --save-commits option to save fetched commits (useful for debug/UI experiments)
bferris413.github.io
2024-12-06
Functionality and template updates.
* Commits are now bucketed by week to give a more stable feel.
* Changed the number of max tracked commits from 100 to 500.
* Adjusted the activity graph to account for the increased number of commits.
* Added a brief info specifying the number of displayed commits (I may yet make this <details>).
cottage
2024-12-04
Trace view updates:
* Fixed missing early return when we can't find the expression id,
* Made tdElements global for reference in document.keydown handler,
* Reset [last]selectedRow/Col on incoming updates,
* Fixed issue where document.keydown was being processed multiple times due to multiple event listeners being registered.
cottage
2024-12-03
Cleared cache on updated decorations.
cottage
2024-12-03
Trace view selections now cause the code in question to be highlighted in the editor pane.
cottage
2024-12-02
Cottage trace view sends hover requests back to the extension.
cottage
2024-12-02
Added lint to ignore possibly-missing global function (acquireVsCodeApi).
budget
2024-12-01
With the new recurrence plumbing, 'duplicate' functionality was easy to add, so I did.
budget
2024-12-01
Added recurrence functionality.
* Utilizes the pre-existing 'select ledger row',
* Present a modal to configure the recurrence for each row,
* Save or cancels recurrence,
* Adds new entries per configuration (only monthly recurrence is supported currently).
budget
2024-11-30
Added callbacks for frequency selection. Upcoming:
* Remove all custom classes and swap in tailwind,
* Store map of selection changes,
* Handle selection changes on 'confirm'
budget
2024-11-30
Setup open/close callbacks on recurrence modal.
cottage
2024-11-29
Fixed an issue where the last selected cell wasn't being rehighlighted if it was previously hovered or hover-related.
budget
2024-11-28
Added interface for RecurringEntry, updated callback signature.
budget
2024-11-28
Started plumbing for 'recurring selections'.
* Added RecurrenceDisplay widget,
* Added new method to Grid - selected(), returns selected entries,
cottage
2024-11-28
Updated TODO to account for trace updates.
cottage
2024-11-27
Added hjkl movement to selection in trace view.
cottage
2024-11-27
Styling changes to trace UI:
* Made highlight and select colors less intrusive,
* Made borders and test 'not black',
* Bumped font weight one level on keys and evaluated cells,
* Shrunk padding on header
cottage
2024-11-27
Removed hover highlight when the current element is already selected.
cottage
2024-11-27
Fixed styling behavior on selection.
* Selected cell is outlined and highlighted.
* Cells related to the selection are outlined.
* Hovered cell is orange.
* Cells related to the hover and highlighted.
This allows you to view the trace related to a selection and the trace related
to a hover separately.
cottage
2024-11-26
Made expressions selectable in trace view.
Styling still needs some work (for example, some borders are overwritten)
cottage
2024-11-21
Updated trace view with debug data for 'long range' feature and fixed metadata reference bug.
cottage
2024-11-21
Added trace view in static/ for non-vscode development.
cottage
2024-11-21
Updated 'metadata' Td field from boolean -> interface
cottage
2024-11-20
Updated TODO with trace view 'polishing' tasks.
cottage
2024-11-20
Added test code for UI 'long ranges' design issue.
In any program with loops, an expression may be evaluated multiple times. This is reflected
in the trace view by multiple columns, e.g. if an expression is evaluated twice, the trace
has 2 columns, 10 for 10 evaluations, etc. etc.
This becomes unweildy once the number of columns scrolls horizontally off the screen, because you can
no longer see the full state of execution for a given trace in a single view. It's a UI problem and needs
some design work to solve.
cottage
2024-11-19
Updated TODO to account for:
* Trace MVP finished,
* Graph view on the horizon
cottage
2024-11-19
Added webview -> extension messages.
When the active editor in a given column switched from the webview to a different panel and back,
the webview lost the previous trace it was displaying, if any.
This commit allows the webview to request the last displayed trace from the extension, if any.
cottage
2024-11-18
Added default message if trace wasn't loaded.
cottage
2024-11-12
Trace view now updates on script changes.
cottage
2024-11-12
Bugfix: only set editor decorations if the current editor language is cottage.
cottage
2024-11-12
Added webiew support in vscode and ported trace view over (non-interactive still)
cottage
2024-11-11
Fixed comment and updated formatting.
cottage
2024-11-09
Hover works as expected for all related expressions in trace UI.
TODO: plug in to LSP update cycle
cottage
2024-11-08
Begin styling trace view.
TODO: Add hover on data elements.
TODO: Store data elements for hover reference.
cottage
2024-11-07
Testing table vs. grid, and added tailwind in js.
cottage
2024-11-07
Added tailwind setup for UI trace view prototype.
project-tracker
2024-11-03
Scrolling works with various edge cases, still need a scrollbar.
project-tracker
2024-11-03
Started plumbing for scroll/overflow.
project-tracker
2024-11-03
Hooked database up to UI.
project-tracker
2024-11-03
Added contractors page and click-to-nav in nav bar.
project-tracker
2024-11-02
Set border type on selection.
project-tracker
2024-10-30
Added top-level nav bar w/ 'active screen' styling.
project-tracker
2024-10-30
Implemented nav scheme from parent <-> child.
project-tracker
2024-10-29
Restructing in the same direction as the previous commit.
* Debug event display was moved to AppUi
* Screen::draw() takes an area and buffer instead of a rect. This lets parents deterine the box children live in.
* Next step is adding navigation between screens, and whether it should be heirarchical or if children can send events back to the parent.
project-tracker
2024-10-28
Restructured a bit.
* Introduced a screen heirarchy, where each 'screen' is a top level view responsible for layout and sending events to the right widgets.
* The AppUi is the top level struct holding all the screens, and is responsible for detecting screen switches and delegating events to the active screen.
project-tracker
2024-10-27
Started filling in UI events.
* Exploring ways to link widget location with event location.
* First attempt uses (rect, id) scheme, but the plan is to either implement Widget
or create a type that returns a widget on demand. Not sure about tradeoffs yet.
bferris413.github.io
2024-10-25
Updated width for mobile overflow. CSS is great.
bferris413.github.io
2024-10-24
Updates to main and template:
* Only check for token if fetching
* Changed heading size to be less intrusive
* Removed width from activity graph, should fix scaling on mobile.
* Fixed wrap issue on mobile.
bferris413.github.io
2024-10-23
Fixed viewBox for mobile.
bferris413.github.io
2024-10-23
Made activity graph continuous from <most recent hundreth commit date> -> <today>
bferris413.github.io
2024-10-22
Updates to template, dev script and commit stats:
* Template shows a small graph of recent activity,
* dev script now includes changes in the src/ dir,
* Site builder populates recent activity as a series of points.
project-tracker
2024-10-20
Going with ratatui for UI =).
bferris413.github.io
2024-10-19
Fixed repo fetch even when --no-fetch was specified.
bferris413.github.io
2024-10-19
Housekeeping and minor format change:
* Removed parent out/ directory since publish model changed.
* Add newline consideration in comment messages.
* Commented out nav until there's more to populate.
bferris413.github.io
2024-10-18
Updating template still.
bferris413.github.io
2024-10-17
Updated main template.
bferris413.github.io
2024-10-16
Template update.
bferris413.github.io
2024-10-16
Updated template, added dev support scripts.
bferris413.github.io
2024-10-16
Added debug commits and started working on the template.
bferris413.github.io
2024-10-16
Added read-from-file for testing/dry-runs/template work.
bferris413.github.io
2024-10-13
Added sketch.
bferris413.github.io
2024-10-13
Added basic templating w/ Tera.
bferris413.github.io
2024-10-10
Simplified the whole git subtree thing (by not using it =), and turned down some verbose logs in main.rs
bferris413.github.io
2024-10-09
Fixed publisher, installed crontab.
bferris413.github.io
2024-10-09
Updated gitignore.
bferris413.github.io
2024-10-09
Added deployment script, tailwind config, template, etc.