typo fixed in bin5 info strings
[brisk.git] / TODO.txt
1  TODO |
2 ------+
3
4   FEATURES |
5  ----------+
6    - CONTINUE FEATURE
7      DONE . save points every game
8      DONE . modify points calculation to include order and mazzo
9      HALF . exclude not standard types from statistics
10          DONE . daily reports
11          . monthly stats
12
13      . add command to continue
14      . investigate user reordering
15
16    - WEBSOCKET TRANSPORT
17      . refactoring $enc attribute management
18      DONE . reintroduced $enc = 'plain' for websocket
19      DONE . fallback for not correct WS version
20      DONE . fini of ws stream
21      DONE . reactivate compression
22      DONE . fix xynt_test01
23      DONE M2: brisk working
24      DONE . manage multiport apache config
25      DONE . manage headers correctly in sac-a-push
26      DONE . manage transport.close method where required
27      DONE . xynt_stream: manage fallback to multiple ports
28      DONE . manage fini for ws
29      POST . server: manage input data from clients
30      POST . manage ping/pong (seems not required)
31
32      DONE . client (xynt_streaming.js)
33      DONE . server (transport.phh)
34
35      DONE M1: xynt_test01.php working
36
37
38    - improved S
39      . db update (add components, maybe single string)
40      . filter in index.php
41      . filter in index_wr.php
42
43    - prefs API:
44      . prefs_assign(content): assign json content as output var
45      . prefs_apply(prefs_new): apply new content to g_prefs and system
46      . prefs_load(content): load json content and apply to g_prefs and system
47
48      . prefs_update: update preferences temporarly
49      . prefs_save: save to the server the new prefs
50
51    - preferences (listen into preferences)
52         // js var, volatile server, (db server || cookie)
53         temporary: js var, volatile server
54         permanent: js var, volatile server, (db server || cookie)
55
56      . data from db OR, if missing, from cookies
57
58      . update values
59      . database change
60      . MANAGE NOT AUTH USERS
61
62    - preferences (with "modifiable S")
63      . Mod. S: new flag into database
64      . graph infrastructure
65      . new box to edit color
66
67   MAJOR |
68  -------+
69    - BUG: some connection to the named socket fails
70    - Not simultaneous more then one stream
71
72
73   MINOR |
74  -------+
75    WIP - try to be more antivirus-friendly
76    - multiple rows between games
77    - packetize and automatize php-ancillary and apache module
78    - DISABLED_TO_FIX: DNS access (perform blocking dns requests, must be fixed)
79
80
81   DONE |
82  ------+
83    DONE - temporarly server hung not reflected on user timeouts
84    DONE - timeouted users are still be able to sit down (only the first at the table is banned)
85    DONE - page still opened after the server restart
86    DONE - log_legal address fix
87    DONE - manage too fast reload in xynt-streaming
88    DONE - add xhr as transport layer and manage different streams better
89    TEST - BUG: pari + 72 non fa 4x ma attualmente fa 3x, da correggere
90    TEST - BUG: lurker are logged out (and remain a pending socket opened (look the spush log)
91    DONE - save/restore database
92    DONE - into the room local step remains -1
93    DONE - centralize all '<script ...' incapsulation to allow multiple transport system.
94    DONE - BUG: access with password from 2 diff browsers the second go in strange "page not found" 
95           in the first tentative, the second works
96    DONE - BUG: access with password from 2 diff browsers place the first in a strict loop (the 
97           problem was a call to a static parent method instead of the overrided child method,
98           substitute self:: with the dynamically get class::)
99    DONE - garbage management
100
101    DONE/FROZEN - problem with getpeer (HOSTADDR)
102
103    DONE - slow cards distribution
104    DONE - substr to mb_substr
105    DONE - parametrizations:
106           . parametrization of $DOCUMENT_ROOT  var in brisk-spush.phh file
107           . parametrization of SITE_PREFIX(_LEN) define
108           . move the name of the named socket into the configuration file
109    DONE - manage and test cross forwarder between table and room
110    DONE - setcookie (for tables only and persist prefs)
111    DONE - images flickering on slow windows: try to poll stream every 300 ms (seems to be download problem)
112    DONE - database connection fails after a while, check close and try PGSQL_CONNECT_FORCE_NEW.
113    DONE - unneeded garbage_time.expired access
114    DONE - BUG: fast loop on stream index_rd_ifra page (js watchdog start without timeout corrupt counts)
115    DONE - BUG: logout failed (fixed with a garbage_collector wrapper at sac-a-push level
116    DONE - 404 wrong page management (remove directories redirections (es. brisk/))
117    DONE - configuration file management
118    DONE - app level keep-alive
119    DONE - index_wr other issues
120    DONE - from room to table
121    DONE - from table to room
122    DONE - chunked
123    DONE - bug: read from a not resource handle (already closed because a new socket substitute it)
124    DONE - partial write for normal page management
125    DONE - index_rd_ifra: last_clean issue
126    DONE - fwrite failed error management (select, buffer where store unsent data, and fwrite check and retry)
127    DONE - bug: after restart index_rd.php receive from prev clients a lot of req
128    DONE - index_wr.php::chat
129    DONE - index_wr.php::exit
130    DONE - index_rd.php porting
131    DONE - generic var management from internet
132    DONE - index.php auth part
133    ABRT - index_wr.php::reload - reload is js-only function
134    ABRT - keepalive management - not interesting for our purposes
135
136  BRISK4 (mammuth)
137  ======
138
139  - STEP MANAGEMENT VERIFY
140  Slim Paragraph
141  DONE - move the garbage timeout on file
142  DONE - in index_rd load all data only when required
143  - briskin5 alignment
144    DONE . extern del garb_timeout
145    DONE . user_load parameters verify
146    DONE . Bin5::load_data and Bin5::save_data refactoring with
147           data split
148    . move many function into "Bin5 class"
149  - garbaging of .step files
150
151  DB: - initial usage
152      DONE - configurabilità file o db
153      DONE - aggiornare le funz di gestione db in modo che prevedano anche il flag DISABLE
154      DONE - travasatore file to pg
155        DONE - travaso punteggi
156        DONE - memorizzazione nuovi i punteggi nel db
157        DONE - gestione classifiche in SQL
158          DONE - produrle
159          DONE - mostrarle
160
161      STEP 1.1
162        DONE - points archiver
163
164      STEP 1.2
165        DONE - partial usability if database go down.
166
167      STEP 1.5
168      - sistema di inserimento nuovi utenti (riversatore da form di inserimento)
169
170      STEP 2
171      - aggiornare le funz di gestione db in modo che prevedano anche il flag SUSPEND
172      - modifica password   
173      - ripristino password 
174
175      STEP 3
176      - comunicazioni di aggiornamento (stato salvato sul server) 
177
178  DONE - var $G_base aggiunta per gestire include in include da path differenti
179
180  BRISK3 (trusty)
181  ======
182   DONE - donameter
183     DONE - G_donors
184     DONE (WOW!) - js object with infos
185     DONE - main logic at login (cookie check in index_rd.php; show_message and createCookie via snippets with block
186            to prevent fast reload)
187     DONE - cookie per non assillare e visualizz.
188     DONE - graphical donameter
189     WIP content (in conf.)
190
191   DONE - numero di tavoli auth-only nel .brisk-install
192   - isolation
193     TEST - ricalcolo delle persone in piedi quando si cambia modalità
194     DONE - se si e' in isolation non si può cambiare nick perdendo l' auth
195     DONE - non leggere le chat di quelli non autenticati (in isolation)
196     DONE - regole per passare alla modalita' (in piedi o ai tavoli autenticati) 
197     DONE - treni non auth da nascondere 
198     DONE - verso gli altri ??: uguale a prima
199
200   finire multilingua (briskin5/index_wr.php e altri se ce ne sono)
201   coniglio
202   only auth strictly
203   placing limits to config file
204
205 Dunque, 
206
207 - come vengono aggiornate le classifiche: ogni giorno alle 23:58
208
209 - cosa cambia tra le tre coppie di classifiche: 
210   ci sono le classifiche dell' ultima settimana, quelle dell' ultimo mese,  e quelle dell' ultimo trimestre,
211   per ognuno di questi lassi di tempo poi c'è la classifica di chi ha giocato più di TOT partite o meno di TOT partite, con TOT che cambia a seconda del lasso di tempo.
212
213 - come vengono calcolate le classifiche: per ogni utente vengono presi tutti i punti fatti ai tavoli con lucchetto nel lasso di tempo preso in considerazione (ultima settimana, ultimo mese o ultimo trimestre), sommati e divisi per il numero di partite fatte in quello stesso lasso di tempo per normalizzare i valori; poi siccome la gente quando vede 0.18734 sbarella ho deciso di moltiplicare il tutto per 100.
214
215 Un esempio per chiarire:
216
217   l'utente 'pippo' che è nuovo gioca 4 partite nell'ultima settimana con i seguenti punteggi:
218     -2, 1, 2, 1
219   lo score viene { [ (-2) + (1) + (2) + (1) ] / 4 }  * 100 = 50.0
220   
221   a parità di score tra utenti va più in alto chi ha giocato più partite.
222
223 Se dopo quelle 4 partite 'pippo' non ne giocherà più, passata una settimana dall'ultima giocata 
224 sparirà dalla classifica settimanale e rimarrà in quelle mensili e trimestrali.
225
226
227   
228
229
230
231
232  BUG
233  ---
234  
235   DONE - paste da demauroparavia
236   DONE - recupero partita per re-login con password
237   DONE - problema "|" nei nomi (manca enhance degli script lato server)
238   - problema col treno se mouse sopra mentre stringe (verif)
239   
240  MINOR
241  -----
242
243  NORMAL
244  ------
245
246   - win test
247   WIP - /listen 
248     DONE - skin della textarea
249     DONE - set cookie 
250     DONE - init client (read from cookie) - ALWAYS BY SERVER
251     DONE - init server
252     DONE - after cookie check auth-only when no-auth case
253     DONE - aggiungi info accanto a "Chat"
254   DONE - /mesgtoadm
255   DONE - img dei comandi
256
257   DONE - form per garantire utenti (accoda in un file nel formato corretto)
258   DONE -   process request
259   DONE -   show form
260   DONE -   close butt
261   DONE -   submit form
262   DONE -   process form js side 
263   DONE -   process form
264   DONE -   documentazione in help
265
266   DONE - user status
267
268   DONE - aggiornare help
269   DONE -   overflow management
270   DONE -   for status
271   -   for password
272
273   DONE - reload home
274   - notify for long pages
275
276   - buddy list
277   - silenziastolti vari (fino al buddy import)
278   - restrict challenge per IP
279   - restricted charset for login
280   - watchdog
281
282   - db (minimal)
283     - db admin page
284     - user db admin
285     - use db 
286     - admin db
287
288     - studiare un anti-dos
289   - login modify
290  DONE  - db (fake)
291  DONE  - display auth
292     - manage preferences 
293
294  minor
295  -----
296    - auth after login
297
298 ----- done ------
299
300  BUG
301  ---
302   DONE   righe troncate
303   DONE - questione "a monte" che:
304   DONE   - lascia fuori il bottone
305   DONE   - scrive &agrave e compagnia
306   DONE - refresh act_table when unauthorized
307   DONE - problema ghost autenticato (ne prendi il posto ovunque sia)
308
309  MINOR
310  -----
311   DONE - refactoring of the owner name (auth attr for owner name)
312   DONE   - room
313   DONE     - at chat input line 
314   DONE     - in the chat output line
315   DONE     - deauth management
316   DONE - table
317   DONE   - at chat input line
318   DONE   - in the chat output line
319   DONE   - for user area of other users
320   DONE   - deauth management
321   DONE - alart to one user
322
323
324  NORMAL
325  ------
326   DONE - strong ban: "expire time|IP|session|(nick if authenticated)"
327   DONE   - login: se auth      -  verifica solo gli expire per quel nick
328   DONE   -        se non auth  -  verifica gli expire per IP e sessione
329   DONE   - riscrivere messaggi
330
331   DONE - login 
332   DONE   - se pass:
333   DONE     - richiede per l' utente un token (tutta la parte backend va un minimo studiata)
334   DONE     - lo legge, ci hasha la password
335   DONE     - invia la pass al server hashata
336   DONE   - se non pass:
337   DONE     - check del login e return corretto
338   DONE     - oggetto in shm single table con ( "ip", "login", timestamp ) e suo management
339   DONE     - rename ghost if logged
340   DONE     - onunload_cb e onbeforeunload_cb !!! 
341   DONE   - da change attrs a change class (input field)
342   DONE     - colore del bg per arrivare ad essere omogeneo
343   DONE     - cambiare path e file di config
344   DONE   - login with or without pass
345   DONE   - registered nick notice (METTERE IL MSG NELLA PAG DI LOGIN)
346   DONE     - segnalare tavoli solo per auth
347   DONE     - rename restriction at auth table
348   DONE     - change nick (strcasecmp)
349   DONE   - refact js tables to handle flags
350   DONE - room javascript refactoring
351
352   DONE - work background
353   DONE - reserved tables
354
355
356  BRISK2 (spawn)
357  ======
358
359    
360    URGENT - tables spawn
361             DONE - link with photos
362             DONE - top banner in Etc file
363             DONE - spawn of a table
364             DONE - data to cookies (removed table_idx from xhr calls also)
365             DONE - set subst to shutdowner/shutdowned
366             DONE - return to index.php
367             DONE - game's token
368             DONE - recover of corrupted table data
369             DONE - closure of a table
370             DONE - flush of the table
371             DONE - security checks for right scope access
372             DONE - garbage collector management
373             DONE -    recursive garbage - howto ?
374             DONE - stat & subst in browser
375             DONE - laccwr setting and exit if all players are unactive for some time
376             DONE - the list of test case
377             DONE - shm dimension
378             DONE - remove unused parts
379             DONE - move images
380             DONE - optimizations
381             DONE - cambiare titolo al tavolo
382             DONE - shutdowning lock tables
383             DONE - topbanner
384             DONE - public announcements
385             DONE - 10 sec to exit from table
386
387             FAR - inheritances
388    
389    TRAIN  -  DONE - add again in reload   
390              DONE - wag_set refact
391              DONE - filtra char speciali per title
392              DONE - chatt_send refact 
393              DONE - elenco dei giocatori
394              DONE - documentazione online
395              DONE - timeout management     
396              LATER - border color a muzzo
397        
398    NORM   - testament
399    NORM   - public announcements
400    NORM   - 10 sec to exit from table
401    NORM   - moving label for tables click
402
403 ----------------- join -----------------
404    NORM   - map
405
406    NORM   - restart preload img
407    NORM   - tools dir with a main and some pages where check briscola tools.
408    NORM   - watchdog
409
410    NORM   - chat vecchie in reload (forse)
411
412  MIDDLE TODO
413  ===========
414
415    - user assistant (with button to enable disable)
416    - documentation
417
418
419  FAR TODO
420  ========
421    NORM - internationalization
422    NORM - img -> div + css
423    
424  WEB
425  ===
426
427    - link to stable/unstable
428
429 -------------------------------------------------------------------
430  DONE
431  ====
432
433    ABORTED - asta: highlight buttons (css hover) - change pointer when over
434    DONE - step proxy
435    DONE - special chars in js
436    DONE - ban temporaneo dai tavoli
437    DONE - flash player to play sound
438    DONEBUG - (aum. il timeout) - carte giocate che restano girate
439          Sembra non migliorare di molto la cosa, gestita la cache
440          correttamente, sono apposto.
441
442    DONE - one player reject a game, to less points (<= 2)
443    DONE - help page
444    DONE - test di download per la cache
445    DONE - se passano tutti tranne l'ultimo l'asta va al penultimo.
446           Corretto il codice, occorre verificare se questo
447           ingenera qualche problema.
448    DONE - raddoppiato il numero di righe nella chat
449    DONE - corretto bug del /nick
450    DONE - carosello pubblicità altout
451    DONE - smammamorti
452    DONE - unload of the stream
453    DONE - standup centrati
454    DONE - current player - in info
455    DONE - HELP butt con ABOUT, REGOLE, VERSIONE
456    DONE - welcome lines in the chats (room and table)
457    DONE - welcome lines in the chats (room and table)
458    DONE - nomi in primo piano se vai sul quadrato   
459    DONE - to pass explicit config file to INSTALL.sh
460    DONE - flag to create a config file
461    ABRT - bottoni => immagini
462    DONE - aggiungere bottone al login
463    DONE - nomi in primo piano se vai sul quadrato   
464    DONE - installer to set cookie path
465    DONE - change name
466    DONE - automatic and manual logout
467    DONE - cache problems solved via .htaccess
468    DONE - all players out of the auction
469    DONE - time to send cards
470    DONE - hide cards before sends at a new game
471    DONE - well recognization of the browser and O.S.
472    DONE - login consistency !!!!
473    DONE - functionalization of garbage
474    DONE - call garbage function into login
475    DONE - game
476    DONE - manage the reload from scratch of the table page
477    DONE - table reset
478    DONE - sendcard => card_send(idx, ....)
479    DONE - show table for game
480    DONE - points calculation
481    DONE - make-up of the chooser
482    DONE - where place the briscola on the table
483    DONE - users info
484    DONE - show current auction position
485    DONE - table with internal management of the transition between pages.
486    DONE - server side page abort management  
487    DONE - cookie problem with Ajax
488    DONE - spostare il tasto "esco"
489    DONE - to pass explicit config file to INSTALL.sh 
490    DONE - 8 tables
491    DONE - safety out management
492    DONE - info enhancement and related button (how win the last game and
493           with how much points ?)
494
495  WEB
496    DONE - homepage
497    DONE - screenshots
498
499 DOC
500    CHAPTERS
501       HTTP Streaming
502       Local serializer
503       Database on shmem
504       Page abort (reload on http streaming case)
505       Chat
506       Cookies management
507       CSS tricks
508
509 CHECK ON NEW SERVERS
510 .htaccess AllowOverwrite mode for Cache-Control directive
511
512
513
514
515 */
516