Commit Graph
97 Commits
Author SHA1 Message Date
雷电芽衣 890bd80d4d C12.6: IMAP sync 2026-10-19 21:21:27 -04:00
雷电芽衣 1c225f6812 C12.5: mail accounts, add and remove
ElyMail's window lists accounts and adds Gmail, Microsoft, iCloud
(app-specific password), IMAP and POP3 ones; a check logs in to both
servers and reports each. Accounts live in the store as JSON with a
case-insensitive unique address; secrets go to the keychain. Removal
names the cache it deletes, takes the secret first and puts it back
when local removal fails. Originals are set aside until commit and
restored after a crash. Requests are numbered so late results stay
with their own dialog. The account list is keyboard-navigable.
2026-10-19 20:17:19 -04:00
ZacharyZhang-NY 5068bc07ca Merge branch 'main' of https://github.com/ELY-Open-Source/ElyOffice
# Conflicts:
#	agents.md
#	scripts/fetch-references.sh
2026-10-19 19:53:11 -04:00
ZacharyZhang-NYandClaude 1d74bbc417 Updates and the component library come from GitHub
The update check reads the latest release from GitHub's API; its JSON
has the same tag_name and assets[].browser_download_url the reader
expects. Ely-GPUI-Components is fetched from ELY-Open-Source at the same
pinned commits.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-19 19:22:39 -04:00
ZacharyZhang-NYandClaude bd68382921 C12.4: mail credentials and OAuth sign-in
Passwords and refresh tokens go only to the system keychain; a refused
keychain keeps them in memory until exit and says why. Gmail and
Microsoft sign in by authorization code with S256 PKCE on a loopback
redirect; refresh tokens are kept, and revoked grants ask to sign in
again. Client IDs come from the build (env or oauth.env). ureq trace
records never reach the log.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-19 18:59:56 -04:00
ZacharyZhang-NYandClaude Opus 5.5 7c5bf48589 C12.3: ElyMail local store
SQLite index, content-addressed originals, rebuildable FTS5 search,
schema versions with a backup before each upgrade and read-only on
failure, and size reporting. Three review rounds; the round 3 fixes
are checked by tests, not reviewed again.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-19 18:14:09 -04:00
ZacharyZhang-NYandClaude Opus 5.5 fe90221c11 C12.2: read and write MIME by the tree
The reader walks the MIME tree with its container context: alternative
picks versions, related finds its root by start, attached multiparts
stay whole, digest children are messages. Nesting deeper than 64
levels, counting enclosed messages, is refused, and over-deep parse
results are taken apart iteratively so dropping them cannot overflow
the stack. Composite parts with a Content-ID are cid targets.

The writer keeps attachment parameters and Content-IDs, writes
multipart and message attachments unencoded, and makes its own
Message-ID. SMTP adds BODY=8BITMIME for 8-bit bodies and SMTPUTF8
when any header block at any depth is 8-bit.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-19 17:35:05 -04:00
ZacharyZhang-NYandClaude Opus 5.5 9f47b94714 C12.1: ely-mail-engine connects over IMAP, POP3 and SMTP
TLS or STARTTLS with the system trust store; password and XOAUTH2
logins keep the server's words on refusal. IMAP and POP3 are written
in the engine (imap-proto parses IMAP replies): async-imap dropped
NO/BAD on LIST and FETCH and lost BYE text, async-pop kept dot
stuffing and logged passwords. SMTP runs its own transaction with
RFC 5321 mailbox checks, full dot transparency, SMTPUTF8 and RSET.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-19 16:53:53 -04:00
ZacharyZhang-NYandClaude 2754b2e3dc 0.1.8
release / windows (push) Failing after 9m38s
release / linux (push) Skipped
release / macos (push) Failing after 21m8s
Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-19 00:27:04 -04:00
ZacharyZhang-NYandClaude 4ef7c96916 R8.4: ElyMark typesets inline formulas; \( and \[ read as math
Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-19 00:26:23 -04:00
ZacharyZhang-NYandClaude 1e6147ae77 R8.3: sheet tab strip scrolls the chosen sheet in (Gitea #8)
Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-18 22:41:28 -04:00
ZacharyZhang-NYandClaude Opus 5.5 d4cb274749 0.1.7
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-17 00:33:01 -04:00
ZacharyZhang-NYandClaude Opus 5.5 3846041f17 0.1.6
release / linux (push) Skipped
release / windows (push) Failing after 3s
release / macos (push) Failing after 2s
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-16 17:00:33 -04:00
ZacharyZhang-NYandClaude Opus 5.5 13546ea899 R7.6: Windows and Linux print (#3)
Windows prints through the system dialog at the document's paper;
Linux through the desktop portal, the dialog's choices laid out by Ely.
Round 3 findings fixed without a further review, as the rules say.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-16 16:59:46 -04:00
ZacharyZhang-NYandClaude Opus 5.5 de4a38e814 R7.5: an open ElyMark block keeps its look (component 2e65b05)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-16 15:01:22 -04:00
ZacharyZhang-NYandClaude Opus 5.5 157c8985b6 R6.9 round 1 fix: strong keeps a heading's weight; sizes are tested
Component 90bd37b.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-15 14:57:19 -04:00
ZacharyZhang-NYandClaude Opus 5.5 de586da545 R6.8 done: review round 3 passed
Component acbbe1d shortens one R6.9 test comment.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-15 14:33:37 -04:00
ZacharyZhang-NYandClaude Opus 5.5 effe92a80a R6.8 round 2 fix: two comments fit ten words
Component 4a8f940.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-15 14:20:40 -04:00
ZacharyZhang-NYandClaude Opus 5.5 d1c1ce97cd R6.8 round 1 fix: measure with the current text; the line end is a stop
Component cd61653. Round 1 verdict kept in tasks/reviews.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-15 14:03:54 -04:00
ZacharyZhang-NYandClaude Opus 5.5 16a6390eeb R6.7 round 2 fix: a kept CRLF reads back char for char
Pins component 26af4be.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-15 13:28:25 -04:00
ZacharyZhang-NYandClaude Opus 5.5 afe3ade415 R6.7 round 1 fix: a drawn CRLF reads back to its start
Pins component c31d092.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-15 13:05:54 -04:00
ZacharyZhang-NYandClaude Opus 5.5 5214eddf77 R6.9: ElyMark headings step up from the body, all bold
Component 5954132 sizes headings by Typora's steps over the body.
Checked in a real Windows window with R6.7 and R6.8.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-15 12:30:14 -04:00
ZacharyZhang-NYandClaude Opus 5.5 8375861903 R6.8: source mode places the caret where the line is laid out
Component 9fb607b measures the drawn line, so a caret after a CJK
character sits after it, not mid-glyph.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-15 12:22:53 -04:00
ZacharyZhang-NYandClaude Opus 5.5 5958e73ade R6.7: ElyMark keeps a single line break on screen
Component 93efa7f draws soft breaks as lines (Typora's default when
writing); exports and copies read with MarkdownReader::joined, as GFM.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-15 12:10:41 -04:00
ZacharyZhang-NYandClaude Opus 5.5 5760d44956 R6.2 round 1 fixes: component 5a53c08
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-15 02:56:17 -04:00
ZacharyZhang-NYandClaude Opus 5.5 f7163d10e3 R6.2: cascading menus with hover intent (component d4fdb69)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-15 02:33:08 -04:00
ZacharyZhang-NYandClaude Opus 5.5 e01e9a4cb5 R6.1 round 3 fixes, ticked: component f1771b3
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-15 02:12:11 -04:00
ZacharyZhang-NYandClaude Opus 5.5 b973c8d62a R6.1 round 2 fixes: component 2b6bd1d
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-15 01:41:47 -04:00
ZacharyZhang-NYandClaude Opus 5.5 02b86cd5cd R6.1 round 1 fixes: component 6a3f348
Open cells keep presses inside their field, finds open the matching
cell, a closing backslash keeps the next pipe, and right presses map
through typed pipes.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-15 01:18:39 -04:00
ZacharyZhang-NYandClaude Opus 5.5 587862ed4d ElyMark: a press in a table opens its cell alone (component 2594b3f)
Visual mode opened a pressed table whole, as Markdown source. The
component now opens only the pressed cell, in place, as its source;
Tab, Shift-Tab and the arrows walk the cells, Enter and Escape write
back in one undo step, a typed bare pipe is escaped. Adds the R6
checklist for the 0.1.5 re-release.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-15 00:53:12 -04:00
ZacharyZhang-NYandClaude Opus 5.5 15d4c2066d Version 0.1.5
release / windows (push) Failing after 5s
release / linux (push) Skipped
release / macos (push) Canceled after 0s
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-14 22:58:02 -04:00
ZacharyZhang-NYandClaude Opus 5.5 2c374b23ed ElyMark: R4.10 round 2 fixes (copy guard, component 2b8bd9f)
A pending conversion no longer overwrites a later clipboard write; pin
moves to component 2b8bd9f (one-pass drawn lookup, latest press wins).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-14 21:52:25 -04:00
ZacharyZhang-NYandClaude Opus 5.5 45ac9c6ec4 R4.13: round 1 fixes; app language leads Han layout
- ely-ui passes its resolved locale to Windows text layout, so
  Chinese UI lays out as Chinese whatever the Windows region.
- Component a4bf696: Find box, sort and filter builders and
  password tooltips read the catalog; stricter shipped-copy scan.
- ElyMark deletes the right-clicked picture (delete_image(at)).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-14 20:52:17 -04:00
ZacharyZhang-NYandClaude Opus 5.5 41f3af04cf R4.13: Chinese displays in one font, shipped components in Chinese
Windows text layout takes the user's first Han language when the
locale is not Han, so simplified characters no longer fall back to
Japanese fonts. Component pin 6df9ab0 routes the remaining English
tooltips, placeholders and samples through i18n.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-14 20:05:37 -04:00
ZacharyZhang-NYandClaude Opus 5.5 5bf2056281 All apps: a second launch hands its files to the running copy
R4.12 (user report). The copy holding the instance lock opens a local
door guarded by a random token in its data folder; a second copy sends
its file paths there, lets it take the foreground, and exits 0 instead
of showing "already running". Files join the ely_ui::on_open queue every
app already uses; the main window comes to the front. Also records the
R4.10 round 1 verdict.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-14 19:02:38 -04:00
ZacharyZhang-NYandClaude Opus 5.5 d5ceaf9aac ElyMark: right-click menu by target; Copy as HTML Code and Plain Text
R4.10. Clipboard row, Copy / Paste As, format and block rows, Table or
Paragraph, Insert, link, image, code and raw-block items; source and
preview menus. Component pin 1b5fb07. Records the user's rule that
ElyMark must work, not match Typora one to one.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-14 18:41:24 -04:00
ZacharyZhang-NYandClaude Opus 5.5 09fcb0b3ed ElyMark: R4.9 round 2 fixes, component pin 6c2d28c
Delete Table in an open block leaves focus on the document; Windows-only
import gated; menu tests run on Windows and Linux only.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-14 17:48:39 -04:00
ZacharyZhang-NYandClaude Opus 5.5 f84f990f90 ElyMark: R4.9 round 1 fixes
Menus act on an open block's selection (component 6d90351), clipboard
keys reach a focused field outside the document, Strike binds per
platform, platform-correct key tests, Delete Table in the table menu
(component 24ffc45), short comments. Pin 6b033f3 -> 24ffc45.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-14 17:18:57 -04:00
ZacharyZhang-NYandClaude Opus 5.5 539206297c R4.9: ElyMark menus and keys as Typora's, component pin 6b033f3
Paragraph and Format menus with Typora's items, labels and keys; Table
is a Paragraph submenu with row and column moves and source tidy.
Ctrl+/ toggles source, F8 focus, F9 typewriter, Ctrl+Shift+=/-/0 size,
Ctrl+Shift+C copies as Markdown, Ctrl+Shift+V pastes as plain text.
Refused commands show why, including refusals read in the background.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-14 16:38:28 -04:00
ZacharyZhang-NYandClaude Opus 5.5 256240c365 R4.4: export and copy read as the visual mode reads
HTML export, plain text and rich copy read each paragraph, heading,
cell and HTML block through the component's MarkdownReader (pin
1251221). Emoji, alerts, the TOC and inline tags match visual mode.
Footnotes sit in place as [n]; link titles are not written.

Three review rounds failed; round 3's one finding (a scan per
footnote over open marks) is fixed with a growth regression, unreviewed.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-14 09:11:47 -04:00
ZacharyZhang-NYandClaude Opus 5.5 b5bfb77ba0 R5.1: in a table, ElyDoc's panel shows the Table group first (component 9ff403d keys folds by title); three rounds, R3 PASS
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-13 23:37:47 -04:00
ZacharyZhang-NYandClaude Opus 5.5 ee1b8ad375 R3.2: Ctrl+wheel zooms one step per notch; version 0.1.4 [skip ci]
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-12 23:15:47 -04:00
ZacharyZhang-NYandClaude Opus 5.5 d0b5aede95 R3.1: real paths without \?\ on Windows (dunce); old recent lists read plain
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-12 18:46:37 -04:00
ZacharyZhang-NYandClaude Opus 5.5 94af561068 C14.R r2: comments within ten words (library pinned at the fix)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-12 17:11:02 -04:00
ZacharyZhang-NYandClaude Opus 5.5 9d5f04a973 C14.R r1: Shift-Tab outdents by columns across spaces and tabs (library b39097c)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-12 17:00:41 -04:00
ZacharyZhang-NYandClaude Opus 5.5 1e629da3fc C14.16 r2: measuring and export use gpui's bundled faces and generic mapping (library 58227cd)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-12 12:48:32 -04:00
ZacharyZhang-NYandClaude Opus 5.5 17efd61ce3 C14.16 r1: fonts chosen as gpui draws for measuring and export (library e0b4e29); Git test commits unsigned
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-12 12:31:33 -04:00
ZacharyZhang-NYandClaude Opus 5.5 aab0cb5408 C14.16: SVG sizes read with fonts (library 50a59d2); a large export stays whole; acceptance record
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-12 12:09:00 -04:00
ZacharyZhang-NYandClaude Opus 5.5 d9dadb3d0e C14.14 r3: formulas framed after outlining, a file per print job, no source selection in rendered modes (library 8234fcd)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-12 11:18:07 -04:00
ZacharyZhang-NYandClaude Opus 5.5 bfd507ae2e C14.14 r2: links judged as browsers read them; only a folder this export made is removed; formula text outlined or refused (library 3bbbd05)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-12 10:59:27 -04:00