Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
262 commits
Select commit Hold shift + click to select a range
bc7485b
docs: narrow remaining candidate acceptance
TNTcraftHIM Oct 7, 2026
bf16776
test(server): verify storage failure and cross-room isolation boundaries
TNTcraftHIM Oct 7, 2026
c2d32ba
fix(interactions): ignore unsupported reaction effects
TNTcraftHIM Oct 7, 2026
bbc176e
refactor(storage): let SQLite own transaction state
TNTcraftHIM Oct 7, 2026
b994c7b
docs(signal): record bounded-load execution evidence
TNTcraftHIM Oct 7, 2026
4854ffb
fix(capture): retain border preference across permission changes
TNTcraftHIM Oct 7, 2026
8bfffbd
test(route): verify bounded root convergence and failure ownership
TNTcraftHIM Oct 7, 2026
3204ca6
docs: align capture and deployment guidance with current owners
TNTcraftHIM Oct 7, 2026
8292f72
docs(audio): assess phone microphone integration boundaries
TNTcraftHIM Oct 7, 2026
e7cced7
docs(media): close physical-display throughput acceptance
TNTcraftHIM Oct 7, 2026
cea9eb2
docs(server): describe current ownership and lifecycle invariants
TNTcraftHIM Oct 7, 2026
5084cca
docs(todo): include thumbnail retirement in capture border review
TNTcraftHIM Oct 7, 2026
9079c7c
docs(transport): reconcile isolated Magicsock acceptance evidence
TNTcraftHIM Oct 7, 2026
74bb1b8
docs(transport): record feedback boundary for Magicsock adoption
TNTcraftHIM Oct 7, 2026
a9e8cee
docs(capture): include display changes in border investigation
TNTcraftHIM Oct 7, 2026
eca1c6a
fix(capture): retain signals for in-flight Windows callbacks
TNTcraftHIM Oct 7, 2026
21afb4d
fix(capture): queue Linux failures on the pipeline bus
TNTcraftHIM Oct 7, 2026
f9d3d45
docs(server): explain current HTTP and service ownership
TNTcraftHIM Oct 7, 2026
16d6b39
docs(nat): clarify outstanding Magicsock integration gates
TNTcraftHIM Oct 8, 2026
d918bb5
fix(presentation): align docs branding and clarify SFU diagnostics
TNTcraftHIM Oct 8, 2026
ebff638
docs(media): record feedback and capture-border evidence limits
TNTcraftHIM Oct 8, 2026
d9251c6
docs(nat): record Magicsock authorization blockers
TNTcraftHIM Oct 8, 2026
08e97d7
docs(nat): record combined transport repair evidence
TNTcraftHIM Oct 8, 2026
77e293f
docs(nat): record scoped admission isolation evidence
TNTcraftHIM Oct 8, 2026
213ffa5
docs(nat): record native capability comparisons
TNTcraftHIM Oct 8, 2026
be26953
docs(nat): qualify multi-destination traversal evidence
TNTcraftHIM Oct 8, 2026
9e6f2a2
docs(nat): record bounded recovery lifecycle evidence
TNTcraftHIM Oct 8, 2026
0fcf709
docs(media): qualify new connection reports and local fallback evidence
TNTcraftHIM Oct 8, 2026
171dd1c
docs(transport): record ICE restart composition boundary
TNTcraftHIM Oct 8, 2026
65ccb5e
docs(transport): qualify underlay rediscovery candidate
TNTcraftHIM Oct 8, 2026
092b83a
docs(transport): record rediscovery lifecycle evidence
TNTcraftHIM Oct 8, 2026
8dba7b2
fix(app): retain public invitation failure details
TNTcraftHIM Oct 8, 2026
7a37092
docs(transport): qualify discovery-retained recovery evidence
TNTcraftHIM Oct 8, 2026
90c9be3
docs(transport): clarify recovery and acceptance limits
TNTcraftHIM Oct 8, 2026
92825f0
docs(transport): distinguish failed probes from failed media
TNTcraftHIM Oct 8, 2026
ccf30bc
fix(diagnostics): distinguish SFU endpoint connectivity
TNTcraftHIM Oct 8, 2026
fad248f
docs: consolidate transport recovery evidence
TNTcraftHIM Oct 8, 2026
d1680e0
fix(media): preserve viewer recovery budget across replacement
TNTcraftHIM Oct 8, 2026
80c34d6
docs(transport): record recovery owner and timing limits
TNTcraftHIM Oct 8, 2026
66d2a08
docs(transport): record listener isolation boundary
TNTcraftHIM Oct 8, 2026
90d005f
fix(routing): preserve new-session recovery opportunities
TNTcraftHIM Oct 8, 2026
1100595
docs(network): qualify transport recovery evidence
TNTcraftHIM Oct 8, 2026
7d20e47
docs(transport): record matched trickle recovery boundary
TNTcraftHIM Oct 8, 2026
c1c9c18
docs(transport): qualify retained-flow recovery candidate
TNTcraftHIM Oct 8, 2026
03c80ff
docs(transport): record retained-flow isolation evidence
TNTcraftHIM Oct 8, 2026
9b67045
docs(network): qualify SFU forwarding behind NAT
TNTcraftHIM Oct 8, 2026
86e53aa
docs(network): verify native SFU and media-loss boundaries
TNTcraftHIM Oct 8, 2026
fa01a00
docs(transport): record full-size media boundary
TNTcraftHIM Oct 8, 2026
d2195ef
docs(network): verify published SFU startup behind NAT
TNTcraftHIM Oct 8, 2026
30e6027
docs(media): record audio preset compatibility gate
TNTcraftHIM Oct 8, 2026
5956830
docs: retire resolved reports from pending work
TNTcraftHIM Oct 9, 2026
650953f
docs(media): plan bounded capability design for 2.0
TNTcraftHIM Oct 9, 2026
3b47b50
refactor(media): decouple audio sender limits from presets
TNTcraftHIM Oct 9, 2026
38ed8b4
feat(media)!: support numeric audio bitrate ceilings
TNTcraftHIM Oct 9, 2026
87b608c
fix(media): declare Opus receive capacity on native preview
TNTcraftHIM Oct 9, 2026
1a7c7d7
fix(capture): preserve source geometry within Windows output ceilings
TNTcraftHIM Oct 9, 2026
8b46d7c
test(media): declare Opus limits in native and SFU receive fixtures
TNTcraftHIM Oct 9, 2026
97f4066
refactor(capture): validate numeric profiles independently of UI presets
TNTcraftHIM Oct 9, 2026
eca6ea8
fix(capture): preserve source geometry through Linux scaling
TNTcraftHIM Oct 9, 2026
9dec156
feat(media)!: accept numeric video size ceilings
TNTcraftHIM Oct 9, 2026
34d2a3b
feat(capture): admit bounded 4K30 video formats
TNTcraftHIM Oct 9, 2026
736f932
feat(media): bound 4K controls by capture capabilities
TNTcraftHIM Oct 9, 2026
fa61093
test(media): cover numeric source geometry and mixed fanout
TNTcraftHIM Oct 9, 2026
c75a205
fix(media): isolate incompatible receiver encoding fallback
TNTcraftHIM Oct 9, 2026
209878f
test(media): verify numeric sizes across SFU recovery
TNTcraftHIM Oct 9, 2026
b9771b5
docs(transport): record bounded address-handoff evidence
TNTcraftHIM Oct 9, 2026
bef002e
fix(media): preserve camera framing across quality controls
TNTcraftHIM Oct 9, 2026
2f111da
docs(research): record Native tunnel continuity limits
TNTcraftHIM Oct 9, 2026
31f8297
fix(media): serialize forwarding probe padding once
TNTcraftHIM Oct 9, 2026
420e1ff
test(media): keep one receiver feedback owner
TNTcraftHIM Oct 9, 2026
10c86a4
fix(media): avoid stale send queues after connection recovery
TNTcraftHIM Oct 9, 2026
5be56b4
docs(research): bound Native tunnel handoff evidence
TNTcraftHIM Oct 9, 2026
efd9f6a
test(gates): distinguish profile application from decoding
TNTcraftHIM Oct 9, 2026
726a105
fix(media): finalize bandwidth probes from acknowledged traffic
TNTcraftHIM Oct 9, 2026
76bfa1a
fix(media): keep bandwidth accounting scoped to video
TNTcraftHIM Oct 9, 2026
d9e477d
test(media): verify receiver admission preserves healthy siblings
TNTcraftHIM Oct 9, 2026
08a99f7
docs(research): record complete App address-change limits
TNTcraftHIM Oct 9, 2026
75fb78c
fix(media): refresh interface addresses during ICE gathering
TNTcraftHIM Oct 9, 2026
132c733
fix(media): recover local native bridges on retained connections
TNTcraftHIM Oct 9, 2026
6436e4a
docs(research): record combined browser transport evidence
TNTcraftHIM Oct 9, 2026
8867a1e
docs(research): reconcile decoded transport controls
TNTcraftHIM Oct 9, 2026
20cb07d
docs(research): record fresh-flow recovery alternative
TNTcraftHIM Oct 9, 2026
4735acd
docs(transport): distinguish native recovery branches
TNTcraftHIM Oct 9, 2026
e780440
docs(research): record native admission ordering constraint
TNTcraftHIM Oct 9, 2026
1ba6021
fix(app): bound native viewer upstream receivers
TNTcraftHIM Oct 9, 2026
18144a7
fix(media): initialize source state before feedback starts
TNTcraftHIM Oct 9, 2026
e1209e3
docs(research): qualify native admission ordering evidence
TNTcraftHIM Oct 9, 2026
9067d8c
docs(research): record cross-browser H264 receiving limits
TNTcraftHIM Oct 9, 2026
ae9014b
fix(viewer): preserve negotiated video rejection
TNTcraftHIM Oct 9, 2026
2f9e771
docs(network): record native admission startup boundary
TNTcraftHIM Oct 9, 2026
dabc7a5
docs(network): record room-scoped key signaling evidence
TNTcraftHIM Oct 9, 2026
49edc9c
docs(network): record native flow and relay policy boundaries
TNTcraftHIM Oct 9, 2026
0225dba
docs(network): retain direct media startup boundary
TNTcraftHIM Oct 10, 2026
4a10af7
docs(network): record preparation cost and remaining integration gates
TNTcraftHIM Oct 10, 2026
9fad617
docs(network): record bounded discovery repair and integration limits
TNTcraftHIM Oct 10, 2026
0f669d6
docs(network): record composed room and native admission evidence
TNTcraftHIM Oct 10, 2026
2c56580
docs(network): record pending-flow isolation evidence
TNTcraftHIM Oct 10, 2026
cf06f29
docs(network): record scoped bootstrap exchange boundary
TNTcraftHIM Oct 10, 2026
1a68163
docs(network): record session capability experiment boundary
TNTcraftHIM Oct 10, 2026
cacad62
docs(network): record native socket ownership boundary
TNTcraftHIM Oct 10, 2026
ac6816f
docs(network): record loopback cancellation evidence
TNTcraftHIM Oct 10, 2026
068eba8
docs(network): record native handshake identity evidence
TNTcraftHIM Oct 10, 2026
c10561b
docs(network): record viewer startup experiment boundary
TNTcraftHIM Oct 10, 2026
8629bf6
docs(network): record single-offer transport evidence
TNTcraftHIM Oct 10, 2026
046d990
docs(network): record receiver binding and identity limits
TNTcraftHIM Oct 10, 2026
a705e65
docs(network): record experimental receiver recovery boundary
TNTcraftHIM Oct 10, 2026
e47326b
docs(network): record bounded discovery recovery evidence
TNTcraftHIM Oct 10, 2026
12628a5
docs(network): record client-scoped transport evidence
TNTcraftHIM Oct 10, 2026
92f3238
docs(network): record native sender ownership checks
TNTcraftHIM Oct 10, 2026
a5efc2c
docs(network): record rendered mixed-route acceptance
TNTcraftHIM Oct 10, 2026
0c6e41c
docs(network): reconcile native handoff acceptance
TNTcraftHIM Oct 10, 2026
d5c812a
docs(network): record invitation retirement acceptance
TNTcraftHIM Oct 10, 2026
d55de81
docs(network): record overlapping parent acceptance
TNTcraftHIM Oct 10, 2026
fc54af8
fix(media): retain source discovery during subscription
TNTcraftHIM Oct 10, 2026
011437f
docs(media): record bounded receiver acceptance
TNTcraftHIM Oct 10, 2026
bc7762e
docs(network): clarify optional transport adoption boundary
TNTcraftHIM Oct 10, 2026
41d34fd
docs(network): record optional native composition and remaining gates
TNTcraftHIM Oct 10, 2026
96f06f9
docs(network): reconcile optional recovery evidence
TNTcraftHIM Oct 10, 2026
ed7118a
fix(viewer): release native control when room access ends
TNTcraftHIM Oct 10, 2026
e405e5a
docs(network): record optional transport acceptance evidence
TNTcraftHIM Oct 10, 2026
25630fe
docs(network): record optional transport recovery and field-test boun…
TNTcraftHIM Oct 10, 2026
ff147f0
docs(network): record complete App fallback evidence
TNTcraftHIM Oct 10, 2026
e9538f5
docs(preview): record internal package and field acceptance boundary
TNTcraftHIM Oct 10, 2026
caec581
docs(preview): require a coherent candidate before external testing
TNTcraftHIM Oct 10, 2026
78b2623
docs(network): record bounded full-room App acceptance
TNTcraftHIM Oct 10, 2026
0a6582f
docs(network): prioritize browser-compatible connectivity
TNTcraftHIM Oct 10, 2026
3148c19
docs(network): record browser renomination boundary
TNTcraftHIM Oct 10, 2026
950de1d
docs(network): assess browser-compatible upstream improvements
TNTcraftHIM Oct 10, 2026
04fd696
fix(media): update Pion for browser ICE interoperability
TNTcraftHIM Oct 10, 2026
091df10
docs(network): assess browser handshake latency proposals
TNTcraftHIM Oct 10, 2026
55f5f6b
fix(ui): align media input drafts and responsive settings
TNTcraftHIM Oct 10, 2026
82e3f25
fix(media): preserve macOS content geometry within output limits
TNTcraftHIM Oct 10, 2026
f9ba6d9
docs(network): separate ICE evidence from retired transport experiment
TNTcraftHIM Oct 10, 2026
680fba2
fix(media): distinguish H264 display areas from decoder storage
TNTcraftHIM Oct 10, 2026
b97845b
docs(guide): explain numeric media controls
TNTcraftHIM Oct 10, 2026
c38c892
docs(release): explain major upgrade steps at download entry
TNTcraftHIM Oct 10, 2026
fac7444
test(media): correct macOS clean-aperture coordinates
TNTcraftHIM Oct 10, 2026
c93c84f
docs(preview): clarify remaining candidate acceptance
TNTcraftHIM Oct 10, 2026
546e72c
fix(media): separate wire values from runtime admission
TNTcraftHIM Oct 11, 2026
be80b3a
feat(media): admit 4K60 with automatic H264 levels
TNTcraftHIM Oct 11, 2026
f7c607e
docs(media): record operating range validation gaps
TNTcraftHIM Oct 11, 2026
75e48d8
feat(media): broaden bounded video controls
TNTcraftHIM Oct 11, 2026
06c6960
fix(linux): select PipeWire node IDs with the path property
AkazaAkali Oct 10, 2026
22137ef
docs(media): record low-rate sender acceptance
TNTcraftHIM Oct 11, 2026
a7a47ce
docs(media): replace stale capture contract details
TNTcraftHIM Oct 11, 2026
4f508d3
docs(guide): align custom quality instructions with candidate limits
TNTcraftHIM Oct 11, 2026
462c7d7
test(media): verify live rate limits across native and SFU routes
TNTcraftHIM Oct 11, 2026
f755692
fix(app): retain STUN discovery redundancy without NAT prediction
TNTcraftHIM Oct 11, 2026
09fd1c2
test(media): isolate candidate diagnostic logging
TNTcraftHIM Oct 11, 2026
1dbfa20
test(capture): align macOS admission checks with input ownership
TNTcraftHIM Oct 11, 2026
8207606
fix(build): retain newer Windows compiler runtime when linking
TNTcraftHIM Oct 11, 2026
2b8d9fe
feat(app): connect approved sites while the App stays ready
TNTcraftHIM Oct 11, 2026
0368022
feat(app): streamline site connection and launcher settings
TNTcraftHIM Oct 11, 2026
b5d710f
fix(ice): preserve STUN destination provenance for native prediction
TNTcraftHIM Oct 11, 2026
a38679c
test(media): isolate recovery capacity from host UDP buffering
TNTcraftHIM Oct 11, 2026
26827db
fix(app): restore launcher settings after a failed initial read
TNTcraftHIM Oct 11, 2026
9dc8e9a
fix(site): align App guidance and film with passive connection
TNTcraftHIM Oct 11, 2026
a6a5f15
fix(ui): align App entry controls with shared interaction feedback
TNTcraftHIM Oct 11, 2026
dc4939a
fix(host): retire native selection with room authority
TNTcraftHIM Oct 11, 2026
7f40cec
fix(ci): keep candidate builds independent of release history
TNTcraftHIM Oct 11, 2026
69211f9
docs: focus candidate ledger on remaining acceptance
TNTcraftHIM Oct 11, 2026
ac970ce
fix(ui): apply quality choices without committing superseded drafts
TNTcraftHIM Oct 11, 2026
25b3b9f
docs: separate remaining candidate checks from deferred evidence
TNTcraftHIM Oct 11, 2026
b721fb4
fix(ui): keep quality preset values readable in narrow layouts
TNTcraftHIM Oct 11, 2026
0fca145
docs: acknowledge community proposals and capture fix
TNTcraftHIM Oct 11, 2026
de8d56b
docs: retain contributor credit through commit attribution
TNTcraftHIM Oct 12, 2026
08e13a5
docs: reassess Magicsock with optional background App transport
TNTcraftHIM Oct 12, 2026
9a6e74c
fix: preserve STUN survey destination observations
TNTcraftHIM Oct 12, 2026
848554e
docs: record candidate acceptance and transport comparison
TNTcraftHIM Oct 12, 2026
2d57c76
docs: clarify the direct transport comparison
TNTcraftHIM Oct 12, 2026
2fa87c2
docs: scope coordinated native hole-punching trials
TNTcraftHIM Oct 12, 2026
9d7973d
docs: record coordinated native punching evidence and limits
TNTcraftHIM Oct 12, 2026
45f3697
feat(app): coordinate bounded native UDP connection retries
TNTcraftHIM Oct 12, 2026
d7b3be0
fix(app): retain media roles during native connection preparation
TNTcraftHIM Oct 12, 2026
5667286
fix(app): detect native capture features without OS version gates
TNTcraftHIM Oct 12, 2026
bf48544
fix(nat): retain stable endpoints during coordinated retries
TNTcraftHIM Oct 12, 2026
7ef2e0a
test(network): add isolated real-process laboratory
TNTcraftHIM Oct 12, 2026
979ab66
test(network): pass namespace rules directly to nft
TNTcraftHIM Oct 12, 2026
224cb91
test(network): verify actual faults, media feedback and run cleanup
TNTcraftHIM Oct 12, 2026
918d187
test(network): calibrate bidirectional NAT and prevent router tuple c…
TNTcraftHIM Oct 12, 2026
cd5773e
test(network): wait for App ownership and verify rendered motion
TNTcraftHIM Oct 12, 2026
ba574ed
test(network): calibrate impairment recovery and expand isolated paths
TNTcraftHIM Oct 12, 2026
9736ae9
test(network): verify fault detection and cancelled-run cleanup
TNTcraftHIM Oct 12, 2026
4a4eb40
test(network): compare NAT settings and exercise public address changes
TNTcraftHIM Oct 12, 2026
0d79da7
fix(media): bootstrap warm sources before transport feedback
TNTcraftHIM Oct 12, 2026
b0f60ef
test(network): bind recovery evidence to current media paths
TNTcraftHIM Oct 12, 2026
c24ed5b
test(media): distinguish startup evidence from observed allocation
TNTcraftHIM Oct 12, 2026
9177610
test(network): calibrate IPv4 blocking before IPv6 trials
TNTcraftHIM Oct 12, 2026
7eb043a
test(media): retain state when RTP clock checks time out
TNTcraftHIM Oct 12, 2026
957184b
docs(network): record laboratory acceptance and evidence limits
TNTcraftHIM Oct 12, 2026
2118f2b
test(network): compare traversal through sequential kernel NAT
TNTcraftHIM Oct 13, 2026
7775cee
test(network): type sequential NAT allocations as service ports
TNTcraftHIM Oct 13, 2026
810faf9
test(network): pass nftables rules through its command argument
TNTcraftHIM Oct 13, 2026
80e09e4
test(media): trace sparse RTP through input and forwarding
TNTcraftHIM Oct 13, 2026
5614bd7
test(network): derive the NAT map key width from numgen
TNTcraftHIM Oct 13, 2026
753809f
test(network): require media on enhanced sequential NAT paths
TNTcraftHIM Oct 13, 2026
fd6bfba
feat(media): extend custom quality controls and show App readiness
TNTcraftHIM Oct 13, 2026
1e5da45
fix(capture): align native H264 output admission across platforms
TNTcraftHIM Oct 13, 2026
78457c2
fix(ui): retain readable custom quality inputs on touch screens
TNTcraftHIM Oct 13, 2026
37643d8
fix(app): cancel retired connections and refresh readiness
TNTcraftHIM Oct 13, 2026
170bcc6
fix(ui): refine sharing settings and common slider ranges
TNTcraftHIM Oct 13, 2026
65595c8
fix(ui): distinguish custom quality values from common sliders
TNTcraftHIM Oct 13, 2026
399c4c9
docs(audio): explain virtual mixer source-audio routing
TNTcraftHIM Oct 13, 2026
70a596f
test(media): accept capability-bounded 4K frame rates
TNTcraftHIM Oct 13, 2026
1b1e28e
fix(ui): clarify App connection recovery and home navigation
TNTcraftHIM Oct 13, 2026
4964984
fix(ui): refine App entry feedback and mascot hierarchy
TNTcraftHIM Oct 13, 2026
7cd9a23
refactor(ui): center the launcher mascot with its title
TNTcraftHIM Oct 13, 2026
3121f59
fix(app): isolate room failure and polish setup controls
TNTcraftHIM Oct 13, 2026
ecb47b1
test(network): observe sustained recovery after address changes
TNTcraftHIM Oct 13, 2026
c2be2f0
fix(media): preserve negotiated video retransmission
TNTcraftHIM Oct 13, 2026
2c6dd65
fix(media): retain repair streams across receiver paths
TNTcraftHIM Oct 13, 2026
4de07bf
test(network): respect locked NAT controls in SFU scenarios
TNTcraftHIM Oct 13, 2026
47117bb
test(network): check the SFU-only policy indicator
TNTcraftHIM Oct 13, 2026
f2ab8e2
docs(network): record recovery acceptance and site approval scope
TNTcraftHIM Oct 13, 2026
282d04b
fix(ui): polish App approval and restore choice press feedback
TNTcraftHIM Oct 13, 2026
ea2c726
test(media): verify sustained quality recovery through SFU
TNTcraftHIM Oct 13, 2026
d16930d
fix(ui): keep the App approval heading compact on mobile
TNTcraftHIM Oct 13, 2026
1e99c89
test(media): record sustained SFU recovery acceptance
TNTcraftHIM Oct 13, 2026
8628b5c
fix(app): retain terminal controls for Linux desktop entry
TNTcraftHIM Oct 13, 2026
1057ea3
fix(deps): apply Go HTTP security updates
TNTcraftHIM Oct 13, 2026
ffd4273
fix(ci): pin the Linux App build environment
TNTcraftHIM Oct 13, 2026
1a1f225
fix(protocol): validate interaction sender roles consistently
TNTcraftHIM Oct 13, 2026
bbf170d
fix(media): handle reserved transport feedback symbols safely
TNTcraftHIM Oct 13, 2026
bfa69c1
fix(media): preserve repaired RTP identity and safe VP8 recovery
TNTcraftHIM Oct 13, 2026
5ded6f7
fix(app): retire interrupted control handshakes without protocol errors
TNTcraftHIM Oct 13, 2026
1bad49d
fix(audio): bound native Opus packet peaks with the upstream encoder
TNTcraftHIM Oct 13, 2026
f74a4fe
docs: align toolchain guidance and pending media acceptance
TNTcraftHIM Oct 13, 2026
a00aff3
docs: clarify native capture acceptance boundary
TNTcraftHIM Oct 13, 2026
b9d6aba
test: preserve RTP timeout diagnostics for sparse layers
TNTcraftHIM Oct 13, 2026
81f44a4
fix(app): retain accepted launch after page cancellation
TNTcraftHIM Oct 13, 2026
abb4579
fix(sfu): admit supported publisher bitrate ceilings
TNTcraftHIM Oct 13, 2026
8008a76
fix(web): retire abandoned room replacements
TNTcraftHIM Oct 14, 2026
6241a4e
fix(media): retain available layers during discovery
TNTcraftHIM Oct 14, 2026
409d975
fix(server): serialize storage shutdown with room writes
TNTcraftHIM Oct 14, 2026
a5e8980
docs(sfu): clarify resource ownership and retirement
TNTcraftHIM Oct 14, 2026
ca075d9
docs: clarify Windows encoding performance checks
TNTcraftHIM Oct 14, 2026
3198de2
docs(network): record full candidate laboratory validation
TNTcraftHIM Oct 14, 2026
8a578a9
fix(capture): stop failed cadence probes early
TNTcraftHIM Oct 14, 2026
b9b4ccd
docs: align candidate acceptance with owner review
TNTcraftHIM Oct 14, 2026
fdfb27d
docs: close local native media acceptance gap
TNTcraftHIM Oct 14, 2026
0770222
fix(ui): keep option selection motion continuous
TNTcraftHIM Oct 14, 2026
ae89881
docs: clarify 2.0 upgrades and future compatibility
TNTcraftHIM Oct 14, 2026
d0ba50e
feat(ui): add always-on-top chat window
TNTcraftHIM Oct 14, 2026
398ad80
refactor(ui): use native detached chat window controls
TNTcraftHIM Oct 14, 2026
87b71ea
fix(ui): keep playful copy quiet between real waits
TNTcraftHIM Oct 14, 2026
24a2873
fix(app): serialize control completion and launcher refreshes
TNTcraftHIM Oct 14, 2026
ba97bd0
test(app): cover control delivery with the race detector
TNTcraftHIM Oct 14, 2026
759f697
docs(site): align staged screens with current App navigation
TNTcraftHIM Oct 14, 2026
c9c9242
docs: close the 2.0 implementation boundary
TNTcraftHIM Oct 14, 2026
099185d
test(app): omit race exit delay from capture fixtures
TNTcraftHIM Oct 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
83 changes: 83 additions & 0 deletions .github/workflows/gitee-mirror.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
name: Gitee mirror

on:
workflow_run:
workflows: [CI]
types: [completed]
branches: [main]
workflow_dispatch:
inputs:
run_id:
description: Original CI run that published the current GitHub release
required: true
type: string

permissions:
contents: read
actions: read

concurrency:
group: gitee-mirror
cancel-in-progress: false
queue: max

jobs:
mirror:
if: >-
github.repository == 'TNTcraftHIM/Piik' && github.ref == 'refs/heads/main' &&
(github.event_name == 'workflow_dispatch' ||
(github.event.workflow_run.event == 'push' &&
github.event.workflow_run.head_branch == 'main' &&
github.event.workflow_run.conclusion == 'success'))
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
# Execute trusted main tooling; upstream artifacts are data, never code.
- uses: actions/checkout@v6
with:
persist-credentials: false
- uses: actions/setup-node@v6
with:
node-version-file: .node-version
cache: npm
- run: npm ci --ignore-scripts
- name: Resolve the published source
id: source
run: node scripts/release-mirror-source.mjs "$PIIK_SOURCE_RUN_ID"
env:
GH_TOKEN: ${{ github.token }}
PIIK_SOURCE_RUN_ID: ${{ inputs.run_id || github.event.workflow_run.id }}
- name: Download original Server artifacts
if: steps.source.outputs.mirror == 'true'
uses: actions/download-artifact@v8
with:
github-token: ${{ github.token }}
run-id: ${{ steps.source.outputs.run_id }}
pattern: piik-server*-${{ steps.source.outputs.revision }}
path: ${{ runner.temp }}/mirror-release
merge-multiple: true
- name: Download original App artifacts
if: steps.source.outputs.mirror == 'true'
uses: actions/download-artifact@v8
with:
github-token: ${{ github.token }}
run-id: ${{ steps.source.outputs.run_id }}
pattern: piik-app-*-${{ steps.source.outputs.revision }}
path: ${{ runner.temp }}/mirror-release
merge-multiple: true
- name: Mirror and verify original packages
if: steps.source.outputs.mirror == 'true'
run: >-
node scripts/mirror-release.mjs
"$RUNNER_TEMP/mirror-release" "$PIIK_RELEASE_VERSION" "$PIIK_RELEASE_REVISION"
env:
GH_TOKEN: ${{ github.token }}
GITEE_TOKEN: ${{ secrets.GITEE_TOKEN }}
PIIK_RELEASE_VERSION: ${{ steps.source.outputs.version }}
PIIK_RELEASE_REVISION: ${{ steps.source.outputs.revision }}
- name: Explain recovery
if: failure() && steps.source.outputs.mirror == 'true'
run: |
printf 'Mirror failed; GitHub publication and Website are independent. Retry this workflow with original CI run %s. If artifacts expired, recover the retained original build output; do not rebuild this version. See docs/operations/github.md.\n' "$PIIK_SOURCE_RUN_ID" >> "$GITHUB_STEP_SUMMARY"
env:
PIIK_SOURCE_RUN_ID: ${{ steps.source.outputs.run_id }}
97 changes: 81 additions & 16 deletions .github/workflows/repository-hygiene.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,27 @@ on:
description: Optional candidate version (vMAJOR.MINOR.PATCH); never publishes
required: false
type: string
network_lab:
description: Run the isolated Linux network laboratory (never publishes)
required: false
default: none
type: choice
options: [none, verify, smoke, full]
network_cases:
description: Optional comma-separated laboratory cases (empty runs the selected suite)
required: false
type: string
network_prediction:
description: NAT enhancement setting (compare runs paired on/off trials)
required: false
default: 'on'
type: choice
options: ['on', 'off', compare]
network_repeat:
description: Repetitions per laboratory case (1..20)
required: false
default: '1'
type: string

permissions:
contents: read
Expand Down Expand Up @@ -75,7 +96,7 @@ jobs:
${{ github.event_name == 'push' && github.ref == 'refs/heads/main' && vars.PIIK_RELEASES_ENABLED == 'true' && 'plan' || 'build' }}
--github-output
- name: Preview release notes
if: steps.release.outputs.publish == 'true' || inputs.candidate_version != ''
if: steps.release.outputs.publish == 'true'
run: node scripts/release-notes.mjs "$PIIK_RELEASE_VERSION" "$GITHUB_SHA" --github-summary
env:
PIIK_RELEASE_VERSION: ${{ steps.release.outputs.version }}
Expand All @@ -89,18 +110,70 @@ jobs:
- name: Set up Go
uses: actions/setup-go@v6
with:
go-version: 1.26.6
go-version-file: go.mod
cache-dependency-path: go.sum
- name: Check Go core
run: npm run check:go-core
- name: Check NAT and media ownership with the race detector
- name: Check reachable Go vulnerabilities
run: npm run check:go-vuln
- name: Check concurrent resource ownership with the race detector
run: npm run check:go-race
- name: Type-check and test
run: npm run typecheck && npm test
env:
PIIK_BUILD_VERSION: ${{ steps.release.outputs.version }}
VITE_PIIK_VERSION: ${{ steps.release.outputs.version }}
VITE_PIIK_REVISION: ${{ github.sha }}
- name: Prepare isolated network laboratory
if: github.event_name == 'workflow_dispatch' && inputs.network_lab != 'none' && inputs.network_lab != ''
run: |
sudo apt-get update
sudo apt-get install -y nftables iproute2 tcpdump conntrack bison flex libmnl-dev libcap-dev
mkdir -p build/network-lab/bin
CGO_ENABLED=0 go build -trimpath -o build/network-lab/bin/piik-server ./cmd/piik-server
CGO_ENABLED=0 go build -trimpath -o build/network-lab/bin/piik-app ./cmd/piik-app
CGO_ENABLED=0 go build -trimpath -o build/network-lab/bin/stun ./scripts/network-lab/stun
# The runner's iproute2 6.1 lacks netem's seed parameter. Keep this tool
# local to the opt-in lab; do not replace system networking utilities.
- name: Check out laboratory traffic-control tool
if: github.event_name == 'workflow_dispatch' && inputs.network_lab != 'none' && inputs.network_lab != ''
uses: actions/checkout@v6
with:
repository: iproute2/iproute2
ref: d2a8ffe85ac64f91ee2aa7679a5046f321b54127 # v6.17.0
path: build/network-lab/iproute2
persist-credentials: false
- name: Build laboratory traffic-control tool
if: github.event_name == 'workflow_dispatch' && inputs.network_lab != 'none' && inputs.network_lab != ''
run: |
make -C build/network-lab/iproute2 -j2 SUBDIRS='lib tc netem' TC_CONFIG_NO_XT=y
echo "$GITHUB_WORKSPACE/build/network-lab/iproute2/tc" >> "$GITHUB_PATH"
- name: Run isolated network laboratory
id: network_lab
if: github.event_name == 'workflow_dispatch' && inputs.network_lab != 'none' && inputs.network_lab != ''
timeout-minutes: 45
env:
CHROME_PATH: /usr/bin/google-chrome
TC_LIB_DIR: ${{ github.workspace }}/build/network-lab/iproute2/netem
PIIK_NETWORK_LAB_SUITE: ${{ inputs.network_lab }}
PIIK_NETWORK_LAB_CASES: ${{ inputs.network_cases }}
PIIK_NETWORK_LAB_PREDICTION: ${{ inputs.network_prediction }}
PIIK_NETWORK_LAB_REPEAT: ${{ inputs.network_repeat }}
run: |
if [ "$PIIK_NETWORK_LAB_SUITE" = verify ] || [ "$PIIK_NETWORK_LAB_SUITE" = full ]; then
sudo --preserve-env=PATH,CHROME_PATH,TC_LIB_DIR "$(command -v node)" --import tsx scripts/network-lab.ts --verify
fi
if [ "$PIIK_NETWORK_LAB_SUITE" != verify ]; then
sudo --preserve-env=PATH,CHROME_PATH,TC_LIB_DIR "$(command -v node)" --import tsx scripts/network-lab.ts --suite "$PIIK_NETWORK_LAB_SUITE" --cases "$PIIK_NETWORK_LAB_CASES" --prediction "$PIIK_NETWORK_LAB_PREDICTION" --repeat "$PIIK_NETWORK_LAB_REPEAT"
fi
- name: Save network laboratory evidence
if: always() && steps.network_lab.outcome != 'skipped' && github.event_name == 'workflow_dispatch' && inputs.network_lab != 'none' && inputs.network_lab != ''
uses: actions/upload-artifact@v7
with:
name: network-lab-${{ github.sha }}
path: build/network-lab/results/
if-no-files-found: error
retention-days: 7

release-server:
needs: validate
Expand Down Expand Up @@ -132,7 +205,7 @@ jobs:
- name: Set up Go
uses: actions/setup-go@v6
with:
go-version: 1.26.6
go-version-file: go.mod
cache-dependency-path: go.sum
- name: Install dependencies
run: npm ci
Expand Down Expand Up @@ -173,8 +246,10 @@ jobs:
include:
- target: windows-amd64
runner: windows-latest
# Native Linux capture links system libraries; keep both architectures
# on the same explicit build baseline instead of following latest.
- target: linux-amd64
runner: ubuntu-latest
runner: ubuntu-24.04
- target: linux-arm64
runner: ubuntu-24.04-arm
- target: darwin-arm64
Expand All @@ -196,7 +271,7 @@ jobs:
- name: Set up Go
uses: actions/setup-go@v6
with:
go-version: 1.26.6
go-version-file: go.mod
cache-dependency-path: go.sum
# scripts/assemble-app.mjs runs `npm run build:web` for the Web
# assets the App binary embeds, so Vite and the license inputs must be
Expand Down Expand Up @@ -290,7 +365,6 @@ jobs:
# Local descriptors/manifests/checksums are validated before publishing.
# Release assets contain packages only; checksums appear in the release body.
- name: Publish packages with release notes and checksums
id: github_release
run: >-
node scripts/publish-release.mjs
"$RUNNER_TEMP/publish-release" "$PIIK_RELEASE_VERSION" "$GITHUB_SHA"
Expand All @@ -304,12 +378,3 @@ jobs:
env:
GH_TOKEN: ${{ github.token }}
PIIK_RELEASE_VERSION: ${{ needs.validate.outputs.version }}
- name: Mirror verified release to Gitee
if: ${{ !cancelled() && steps.github_release.outcome == 'success' }}
run: >-
node scripts/mirror-release.mjs
"$RUNNER_TEMP/publish-release" "$PIIK_RELEASE_VERSION" "$GITHUB_SHA"
env:
GH_TOKEN: ${{ github.token }}
GITEE_TOKEN: ${{ secrets.GITEE_TOKEN }}
PIIK_RELEASE_VERSION: ${{ needs.validate.outputs.version }}
23 changes: 20 additions & 3 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,16 @@ PR; maintainers can help identify what still needs verification.
讨论时请结合实际场景提出建议,尊重不同意见;分享截图或日志前移除隐私内容。
无法运行的检查请如实说明,便于维护者协助验证。

Review contributions by their practical value, evidence and fit with the product,
not their line count. A small fix that identifies and resolves a real defect is
valuable. Duplicate work already independently resolved, personal preferences or
low-value changes may be declined; merging is not an attribution mechanism.
Retain authorship for accepted contributions and credit substantive discoveries
accurately, without attributing independently written code to a PR author.
评审看实际价值、证据和产品定位,不看代码行数。发现并解决真实问题的小修复同样值得接纳;
已经独立解决的重复工作、个人偏好或收益很低的改动可以不合并,不为增加贡献者名单而合并。
保留已接纳贡献的作者信息,如实说明有价值的问题发现;独立编写的代码不应冒记为他人共同编写。

## Lean Workflow

This is the default for an ordinary scoped implementation or bug fix.
Expand Down Expand Up @@ -101,9 +111,12 @@ does not establish coverage.
The server core is Go, so its acceptance runs here. It builds the Web UI first when
that output is missing, because both binaries embed it. CI invokes these same
package commands rather than rebuilding their steps in YAML.
- `npm run check:go-race` checks port mapping, media-edge ownership and their
scoped NAT dependencies with Go's race detector. It requires a supported cgo
toolchain; CI runs it on Linux.
- `npm run check:go-race` checks port mapping, media-edge and native-control
ownership, loopback delivery, service storage shutdown and scoped NAT dependencies with Go's race detector. It
requires a supported cgo toolchain; CI runs it on Linux.
- `npm run check:go-vuln` checks the App and Server entry points and their
dependencies against the Go vulnerability database. CI uses the Go version
declared in `go.mod`; update that owner for required toolchain security fixes.
- `npm run check:native` runs only the current platform's capture compile/probe
and deterministic native regressions. The Linux App packaging job includes
its headless GStreamer output-profile and retirement test; this does not
Expand All @@ -121,6 +134,10 @@ does not establish coverage.
result. A manual diagnostic may locate a failure, but is not retained as pass
evidence. Existing `PIIK_CLIENT_*` gate environment names retain their current
contract; renaming the tools does not change those overrides.
- `gate:network-lab` runs the opt-in [controlled network laboratory](./docs/research/network-lab.md).
It requires a disposable Linux runner with namespace administration. Its own
routers contain all firewall and traffic-shaping changes; do not run it on a
production service or treat its model results as a public success rate.
- On Windows, execute App/Server and Go test binaries only from stable
project build paths. Go's temporary compiler/cache files are not firewall
identities; do not run network tests with a changing temporary executable
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,8 +71,8 @@ device and adjust your voice volume.

Piik follows your system language: Chinese or English, with English as the fallback.
Use **中 / EN / ✦** in the header to switch language or try the visual mode.
The App offers a local room, a temporary public link, or a connection to your own
site. Keep the App running while sharing through it.
The App can create a local room or temporary public invitation, and stays
available to supply capture for an approved site. Keep it running while sharing.

Download a ZIP beginning with **`piik-app`**. The filename also identifies the platform:

Expand Down
2 changes: 1 addition & 1 deletion README.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ Piik 是一个免费开源的私密屏幕共享工具,适合游戏直播、一

Piik 默认跟随系统语言,中文系统显示简体中文,其他语言显示英文。
顶部的 **中 / EN / ✦** 可切换中英文或体验纯视觉模式。
Piik App 提供本地房间、临时公网邀请和连接已有站点三种模式,分享期间需保持 App 运行。
Piik App 可创建本地房间或临时公网邀请,也能在后台为已授权站点提供采集能力。分享期间需保持 App 运行。

下载以 **`piik-app`** 开头的 ZIP 压缩包,再按文件名中的平台标识选择:

Expand Down
Loading
Loading