Releases
v0.1.0
Compare
Sorry, something went wrong.
No results found
Changelog
2743c55 Merge pull request #1 from patrache/integration
a6a1517 build: check release binaries before goreleaser publishes
7b4f076 build: checksum-verified install scripts for unix and windows
f0d2e53 build: goreleaser config for darwin/linux/windows amd64/arm64
65162c8 build: homebrew tap formula template
015ebea build: init Go module with pinned client dependencies
91442ac build: ship under the MIT license (owner decision D6)
cb75ed1 build: verify release default server without go version -m
9ddad66 chore(deps): tidy module, make golang.org/x/text a pinned direct dependency
9a266c7 chore(server): scaffold worker, bindings, D1 schema and vitest pool
016e5ab ci(server): type-check test files too via npm run typecheck
44fd165 ci: pin every GitHub Action to a commit SHA (pending item 2)
3ed513e ci: server vitest workflow and tag-only release workflow
ec5e8dc docs(contract): add x/text, CR-A..D and config ErrNotLoaded to client-architecture
d3c7a6e docs(contract): move masil admin ownership to sns-fun (CR-S3)
94a8a5f feat(admincli): masil admin reports, resolve, remove, suspend and audit commands
a63a542 feat(autostart): launchd, systemd --user and HKCU Run registration
308cdef feat(autostart): launchd/systemd/run-key renderers and stable executable path
cbd9f18 feat(chat): DM and group DM creation, channel settings overlay
75da3a7 feat(chat): author menu in msg.actions reports the author as a user
05258e8 feat(chat): channel and DM list pane with badges and presence
df07ba3 feat(chat): channel view with history paging, read marking, new-message highlight
35a9ab4 feat(chat): composer with optimistic send, retry, IME cursor, edit-last
23603e1 feat(chat): create and join spaces, invite link and direct invite screens
a1be007 feat(chat): friends and requests screen, user picker, friend.add
83a7416 feat(chat): home route with DMs, friends, invites entry points
53b09b3 feat(chat): invite management and public/private channel creation
3777192 feat(chat): mention, emoji and slash-command autocomplete
60fdc22 feat(chat): message actions, reactions, pin, delete, copy, report, block, poll vote
637e291 feat(chat): message renderer for full/line/bubble/minimal densities
b29f6a4 feat(chat): message search with scopes, highlights, jump to message
1dbe1da feat(chat): package scaffold, shared helpers, menu and form overlays
2dd7dd8 feat(chat): pinned messages overlay and palette command coverage
981abad feat(chat): slash commands /me /shrug /poll /status /focus /roll /invite
058b74a feat(chat): space rail pane
19f71ec feat(chat): space settings overview, member roles, kicks and bans
14c7cb3 feat(chat): thread panel with per-mode placement
93d6f81 feat(chat): typing indicator, presence polling and members pane
7781114 feat(chatstore): REST page merge, optimistic reactions, resync
9ebce2a feat(chatstore): apply realtime message/thread/reaction/pin/poll events
268fd5f feat(chatstore): reducer skeleton, windows, pending sends, typing
8b203f4 feat(cmd): masil daemon run/install/uninstall/status
525e61e feat(core): alert decision policy, shared shown-ledger, OS backend
983f163 feat(core): api client core, error envelope, cooldowns, fake server
d3d3f4f feat(core): api endpoints messages through admin
1c2de9b feat(core): api endpoints meta/auth/me/users/social/dms/spaces/invites/channels
e376c99 feat(core): api wire types mirroring api.md section 2
4aa6a84 feat(core): app shell rendering, status/tab bars, harness driver and shell goldens
ce39090 feat(core): command palette with chosung fuzzy search, core commands, run-command dispatch, live theme switch
d1042cb feat(core): config paths, toml load/save with defaults, atomic writes
444a424 feat(core): credentials, device id, tui/daemon file locks
9cdad4f feat(core): drawing widgets (frame, badges, chips, poll, tabs, toasts, spinner, fade)
c570133 feat(core): focus intents, key routing, ctrl+w prefix, mouse, pins; preservation tests
ad766fc feat(core): four themes with derived styles and code colors
37cf534 feat(core): id-anchored list and IME-safe normalizing composer
a54a2e3 feat(core): korean humanize, slash command parser, terminal caps
049cab2 feat(core): layout modes, pins and exhaustive geometry
5acaa2c feat(core): login and signup screens with client validation
26f5fbf feat(core): markdown subset parser and themed renderer with chroma
aa9588d feat(core): masil entrypoint with command registry and core commands
4618770 feat(core): mode-independent navigation state and slot projection
9714369 feat(core): overlay stack with clamping/degrade, help, confirm, emoji picker, report dialog
700c8c8 feat(core): persist ui state.json and run the tea program under the tui lock
5b8ea99 feat(core): phase-0 stubs for every core public signature and live registries
f51697e feat(core): realtime bridge, bootstrap/resync, idle, watch, unauthorized/logout handling
224b6eb feat(core): realtime client with resume, heartbeat, backoff, rate-limited outbox
ad2e555 feat(core): realtime wire protocol and typed event decoding
41208bf feat(core): settings screen with local, server, blocks, sessions and password sections
b9d435d feat(core): shared store, event reducers, bootstrap, ordered windows
df8ec77 feat(core): status bar right items, toasts with timed expiry, error toasts
39ae669 feat(core): tui alert handling with ledger dedupe, toasts and focus summary trigger
18b97ca feat(core): ui contracts, timers, keymap and raw-timer static check
8a8370f feat(core): version user-agent and ULID helpers
7de19b3 feat(core): width-stable unicode sanitize, truncate, wrap, fit
9a5e1be feat(daemon): judge local TUI presence via tui.lock with server-signal fallback
0c8bda2 feat(daemon): notify-mode run loop with credential wait, live config, restart on upgrade
09d1996 feat(daemon): persist daemon-state.json and derive resume point
9e92601 feat(daemon): rotating daemon.log and status report from the daemon's own view
606129e feat(daemon): unbounded ordered alert queue with grace re-judgement and ack marking
185aad9 feat(feed): feed poll voting, retract, close and live results
0654d0a feat(feed): full-screen media viewer with kitty and iTerm2 support
5a5c448 feat(feed): hashtag feed, top-10 trends with hashtag and post search
13f2983 feat(feed): notifications inbox for command pane and single-pane modes
ccc1f3b feat(feed): palette commands, sns registration and cross-mode integration tests
dc9c99e feat(feed): post actions, menu, report/block and user list overlays
767c4ef feat(feed): post and story composer with uploads, polls, reply and quote
9337d3f feat(feed): post card renderer with four densities and hit regions
1eb24c4 feat(feed): post detail with ancestors and expandable reply tree
adf57d2 feat(feed): profile route with follow, private requests, edit, block and report
fafad68 feat(feed): story viewer with auto-advance, report and delete
26173d4 feat(feed): timeline route with tabs, story ring, discover polling and command-mode column
d5f895a feat(feedstore): add feed reducer with timeline, post, story and notification rules
827a404 feat(feedstore): resync open timelines, posts, stories and notifications
9dc4ecd feat(fun): focus mode commands and once-only missed-items summary overlay
3a152be feat(fun): guestbook tab on profiles and write dialog
d0b7837 feat(fun): status message and presence mode commands and dialogs
74927bd feat(imgrender): decode, metadata-stripping upload prep and half-block renderer
19d1e79 feat(imgrender): kitty placeholder renderer, iTerm2 inline helper and media cache
d75a059 feat(server): 24h stories with feed rings, views and author-only viewers
e51bdb5 feat(server): R2 uploads, media serving with ETag and access rules
d56dd82 feat(server): TopicHub watcher leases and watch frame
15dd4e2 feat(server): UserHub seq log, resume replay, device acks, epochs and alarms
b5a7955 feat(server): UserHub websocket upgrade, hello/resume/ready and frame validation
75b304d feat(server): admin forced content removal with R2 deletion and report resolution
cb61733 feat(server): admin report triage, suspension and audit listings
2b5c25b feat(server): app shell, api/event types, error envelope, validation, version gate
47db744 feat(server): blocking with relation cleanup and public-switch follow approval
b8add90 feat(server): channel serialization with unread state, dms and group dms
efebb73 feat(server): content and user reports with snapshots
17d71c2 feat(server): create/get/delete posts with media, hashtags, mentions, idempotency
9e201c1 feat(server): cyworld-style guestbook with secret entries
aaec607 feat(server): d1 helpers, cursors and row types
1324c04 feat(server): emoji reactions and message pins
cc4eceb feat(server): following/discover timelines with since/gap and profile post tabs
011354c feat(server): follows with private-account approval and follower lists
3a75d8c feat(server): friends and friend requests
1cf570a feat(server): hashtag feed and 5-minute trends top10 cron
811d609 feat(server): hourly cleanup cron incl. story expiry and orphan uploads
f6ad62f feat(server): inbox notifications and desktop alert generation
6b55ea9 feat(server): invite links and direct space invites
8b94ece feat(server): likes and reposts with guarded counters and timeline events
f3d959b feat(server): logout, session management and password change with socket revocation
5d75811 feat(server): me, profile, settings, status and user lookup routes
ca1c582 feat(server): mention and @here resolution, message notifications, edit and delete
6dac641 feat(server): message search with trigram FTS and short-term LIKE fallback
bba1c4b feat(server): message threads with participants and reply notifications
4035942 feat(server): notifications inbox and pinned notification hooks
d737ea2 feat(server): permission rules for dm, spaces, channels, posts and presence
0072d64 feat(server): poll voting and closing for chat and feed polls
c650cd0 feat(server): post serialization, post search and hashtag search
5cc3d24 feat(server): presence computation, focus mode and presence routes
234f917 feat(server): publishEvent fan-out with notify-mode split and tui_state signal
b14eba6 feat(server): read markers, unread counts and typing indicators
169651c feat(server): realtime protocol constants and online audience resolution
483720d feat(server): replies, quotes, context and reply tree listing with visibility filter
56a41e4 feat(server): send/list/get messages with nonce idempotency, rolls, polls and system messages
99473a9 feat(server): signup, login, bearer auth middleware and rate limiters
29266db feat(server): spaces, roles, membership removal, bans and transfer
29073b5 feat(server): text channel management, private channel members and prefs
5acf707 feat(server): text normalization, mentions, hashtags, dice, snippets
2be571c feat(server): ulid, time and password/token crypto helpers
23dd7ac fix(admin): handle help and usage errors before loading credentials
957c999 fix(api): FetchMedia only GETs /v1/media/ on the API origin
f65f321 fix(api): client limiters follow api.md 6; guard limiter calls the scanner cannot read (8-a)
06ac8dd fix(api): refuse request paths a URL normaliser would reroute
846f187 fix(api,markup,ui): keep server and link text from writing terminal escapes
cd57c52 fix(api,server): path IDs only from escPath on the client; malformed IDs 404 before lookup on the server (pending item 5)
72a9589 fix(app): open masil join's invite on the home tab, not the restored channel
c28638f fix(app): report a 4001 during the user's own logout as logout, not unauthorized
d3547ae fix(app): show OS notifications from a tea.Cmd, off the Update goroutine
13830fd fix(autostart): probe the systemd user manager and roll back failed installs
132830b fix(chat): DM header presence falls back to the friend entry like the sidebar
d744c34 fix(chat): failed first history page shows a retry notice instead of a stuck spinner
38801bd fix(chat): grapheme-whole search highlights; transfer picker loads every member page
9dc6903 fix(chat): member lists follow membership events; space members tab polls presence
ee2de22 fix(chat): my own messages never start the "새 메시지" divider
a8f4973 fix(chat): space.leave confirmation waits for and lands its result from any route
4b5d220 fix(chat): stop members presence polling when no channel is viewed
1d4cbd2 fix(chatstore): crossed events never regress held copies; pin lists replay their flight
73a27a3 fix(chatstore): late creation payloads never regress a held message copy
6e9c0fa fix(chatstore): learn message authors from REST pages, threads, upserts and pins
03b1c7c fix(chatstore): replay what replacing pages miss, discard stale pages, resync that cannot go stale
dbcd9a0 fix(cli): warn on install when credentials belong to another server
a2bd9d5 fix(config): never overwrite a config.toml that failed to load
36a57fe fix(config): per-field reset on wrong-typed values, retry rename on windows
5a3dd1e fix(daemon): log duplicate alerts as skipped, not shown
3bc82d3 fix(daemon): reconnect after the realtime client halts on a second 4009
971f3d9 fix(daemon): stay offline after the realtime client halts on a second 4009
77673d4 fix(daemon): treat an unreadable or unparsable config.toml as a reload failure
9426a94 fix(dms): group DM refusals over a block pair no longer name who blocked whom (D2)
ae584c5 fix(feed): a click on the selected card, reply or list row opens it
b72eae0 fix(feed): back off stale story-ring refetches after a failed stories/feed
c343e99 fix(feed): discover new-posts check runs on empty and small windows
7969218 fix(feed): inbox loads its first page even after realtime notifications
30c7528 fix(feed): keep the composer draft read-only while a post is being sent
61ee3dc fix(feed): name a mention's space from the store, never "스페이스"
9841e9d fix(feed): profiles follow guestbook and friendship events live
498e537 fix(feed): quiet automatic first-page retries; the inbox retries a failed load
b096138 fix(feed): reply/quote composer watches its target post
08502cf fix(feed): the new-card fade leaves the card's closing rule full width
8d5577f fix(feed): trends paste, timeline load/cursor in FeedStore, raced events, bounded images
aa08e49 fix(feed,admincli): clear stale iTerm2 images; ended suspensions show 정상
322dc1d fix(feedstore): refetch expanded reply windows under open posts on resync
899a0ee fix(imgrender): bound the lossless WebP pre-decode scan by the canvas and byte limit (pending item 0-d)
45c83e7 fix(imgrender): cap remote decodes by decoded bytes and run two at a time
237b63f fix(imgrender): cost a lossless WebP's Huffman groups from its bitstream (pending item 13)
b51b649 fix(imgrender): cost the bomb check by what each decoder allocates (pending item 13)
42851c0 fix(imgrender): count the Huffman groups a VP8L bitstream declares in the bomb check (pending item 13)
5472c9d fix(imgrender): memoize half-block Peek and bound decoded media memory
80d129c fix(imgrender): refuse WebP whose ALPH is not right before its VP8 (pending item 12)
3cb5d26 fix(imgrender): refuse over-long VP8 chunks; shrink without kernel temporaries (pending item 13)
9a85620 fix(imgrender): strip WebP/GIF metadata before upload (pending item 12)
1c8dca5 fix(imgrender): the VP8L walk reads only the canvas-sized stream and only within the limit (pending item 13)
8b59229 fix(invites): a direct invite dies once its invitee is in the space by any route (9-b)
c6ab2fb fix(invites): no invite_received for a direct invite canceled right after its INSERT (9-b)
96b0ece fix(invites): unfriending cancels pending direct invites both ways; accept re-checks the friendship (D3)
896b27d fix(markup): a backslashed * or _ is not emphasis, so /shrug shows ¯_(ツ)_/¯
4b638fb fix(markup): hyperlink only when the shown text is the target up to NFC (pending item 0-c)
33eb358 fix(markup): percent-encode OSC 8 hyperlink targets
44f7f3c fix(markup): strip control bytes from link URLs before OSC 8
59865a5 fix(markup): underline link runs as one SGR run so flag graphemes keep their width
60d2f60 fix(markup,uitest): close the 0-b review gaps on bare URLs, OSC 8 scope and escape tests
b114362 fix(notify): show OS notifications without pasting user text into scripts
31d9513 fix(notify): test the real show path of every platform; quote plain D-Bus bodies
6960f46 fix(presence): D1 mirror keeps the exact focus start; serializeMe reports it (D4)
70f400e fix(presence): a suspended account shows others no presence or last_seen_at (D1)
1c03b44 fix(presence): suspending a dnd/focus account tells its watchers; friends order treats it offline (D1)
6822d6a fix(realtime): replay masks a suspended friend-request sender; notify replay and focus block tested (4-a)
3cc82b8 fix(realtime): resume replay and focus summary drop notifications of hidden actors (4-a)
f4f192e fix(server): GET/HEAD with body framing no longer 500s in the body cap
f075196 fix(server): UserHub re-checks the session before accepting a socket
58ac113 fix(server): a 0-row write's error code comes from its own batch, not a re-read (10-a)
f945d73 fix(server): declining an active follower no longer decrements follow counters
06ea6d4 fix(server): enforce body caps on received bytes, not Content-Length
b34b39c fix(server): event Posts no longer leak a hidden reply parent's author
c0b2c5d fix(server): every friend-accept statement checks the block itself (pending item 10)
131ebed fix(server): final-review fixes for Me presence, poll visibility, dnd reconnect, suspend bound
e174cf5 fix(server): friend accept checks the sender's suspension in its write (pending item 10)
c67e62c fix(server): gate invite creation and every link use on the issuer's right
8e11773 fix(server): hide a suspended actor's notifications; pin suspension on sibling paths
702f19b fix(server): hide a suspended owner's SNS content from other viewers
3f937df fix(server): invites die with the inviter's right to issue them
267eace fix(server): log calls are a constant message plus a fields object (pending item 7)
a0c336f fix(server): notify fan-out in one scheduled task, 50 RPCs at a time
32d74a3 fix(server): poll vote, retract and close are writes in the conversation (pending item 11)
a10f92b fix(server): put the block and suspension rule into the relation writes (pending item 10)
67b4b97 fix(server): rate-limit current-password checks on POST /auth/password
f088833 fix(server): re-check blocks inside the group DM member-add batch; RL_SOCIAL on member add
b3ffda8 fix(server): refuse WebP/GIF uploads that carry EXIF/XMP/ICC or comment blocks (pending item 12)
812dbb4 fix(server): refuse group DMs that put two participants who block each other together
081a935 fix(server): reject direct space invites to a suspended user
b80e1a9 fix(server): skip global JSON parse check on POST /v1/uploads
b48e1b5 fix(server): space delete / member role / direct-invite liveness answer from their own batch (10-a)
d05e85e fix(server): substring search without LIKE patterns (D1 50-byte limit)
6f18d4f fix(server): the four 0-row paths 58ac113 missed answer from their own batch (10-a)
989a8d9 fix(server): total errFields, single-object log shape, tighter log scanner (pending item 7 follow-up)
403c3fa fix(store): re-apply events from the bootstrap flight over the snapshot
76c4bd1 fix(store): treat partial bootstrap lists as failed requests
5b43317 fix(textwidth): NFC-compose before rule 7 and keep runes of jamo clusters
75dc245 fix(textwidth,notify): drop bidi/format chars and line separators; pin Show's own sanitize
19cecb2 fix(textwidth,ui): drop every invisible rune and never show a blank name
26c216e fix(ui): copy only what the screen shows to the clipboard
f9d707f fix(ui): final-review findings — home reachable, load retries, resize selection, pre-bootstrap states, resumed backfill
5c02707 fix(uploads): server refuses metadata inside ANMF frames and odd GIF blocks, matching the client (pending item 12)
5294610 fix(uploads): server refuses metadata inside WebP frames and GIF sub-blocks the client strips (pending item 12)
534c561 fix(users): a suspended account shows others only its handle and display name (D1)
c42930f fix(widgets): drop List render cache on ctx.Mode change
f36ffa0 merge: integ-cli gap fixes (pending 0-d, 5, 12, 13)
70438bc merge: integ-cli into integration
738e62f merge: integ-srv gap fixes (pending 8-b, 9-a, 12, 13, D4)
bfcfd23 merge: integ-srv into integration
3cbbb2d merge: track/chat into integration
aa78e92 merge: track/daemon into integration
bdf9f07 merge: track/server into integration
a32eb09 merge: track/sns into integration
62e4a7f perf(uitest): count a rune's column only when it is reported
c9a1651 test(api,imgrender): pin checkPath's encoded-dot and backslash branches
acfec02 test(chat): per-mode goldens, mode-switch preservation and read, tab completion gate, sweeps
5c30a00 test(ci): read workflows as YAML so every uses spelling is pin-checked (pending item 2)
88fc9c0 test(contract): api.md 6 limiter column is checked against the routes both ways (8-a)
40b8eba test(contract): limiter table check reads limit() at runtime and lints every other path; rate tests survive window rollover (8-a)
699dd48 test(core): end-to-end product goldens and integrity sweeps
451ea69 test(core): fake clock, size sets, key parser, frame integrity checker
47fd43f test(core): mockup fixtures, hostile set, fake api routes, stub screens
e6d902f test(daemon): M4 gate — daemon e2e and idle footprint flood against wrangler dev
ce5f00a test(dms): pin the group DM pre-check's block gate both ways; race test budget verified (8-b)
a9ace9d test(dms,invites): pin the newcomer half of the group DM room and the space scope of link revokes (8-b, 9-a)
649f995 test(e2e): M1 gate — auth, sessions and realtime against wrangler dev
018cfb8 test(e2e): M2 gate — chat flows delivered live against wrangler dev
06b5131 test(e2e): M3 gate — feed, follow, stories, trends and inbox against wrangler dev
288ddbc test(imgrender): pin the stripped-bytes downscale path for >5MB GIF/WebP (pending item 12)
3262bf1 test(invites): direct invites stay canceled after the inviter rejoins (9-a)
1270c52 test(presence): pin the pre-0003 focus start fallback; Focus says extending keeps started_at (D4)
b051a4b test(realtime): pin finishFocus re-check and resume's one-block replay against a slow actor lookup (4-a)
a5c1821 test(release): normalize CRLF before checking goreleaser and release.yml
e164ec7 test(server): feed NFD input to normalizeText test
305c18f test(server): local end-to-end smoke script against wrangler dev
2bd9703 test(server): mirror the in-batch block check test; per-round adder in the member-add race; RL_SOCIAL in api.md section 6
49156d4 test(server): pin a suspended author's embedded quote / reply parent; document suspended-owner 404s
bf2009c test(server): pin custom status message and focus mode endpoints
26e88b7 test(server): pin post search and hashtag search behaviour
5b1b60d test(server): pin the link revoke on removal (pending item 9)
c203477 test(server): seed group-dm friendships with one D1 batch to stay under the 5s timeout
b41b9e0 test(server): wait for stored acks in the use_device_ack resume test
4abe1f7 test(uitest,textwidth): pin pending-fixes 1 on every screen and CLI output
You can’t perform that action at this time.